Docker使用笔记-镜像多阶段构建
# 概述
多阶段构建,解决如下痛点问题:
- 镜像层次多,镜像体积较大,部署时间长
- 源代码存在泄漏的风险
如下例子是多阶段构建示例:
FROM golang:alpine AS builder
WORKDIR /build
ADD go.mod .
COPY . .
RUN go build -o hello hello.go
FROM alpine
WORKDIR /build
COPY --from=builder /build/hello /build/hello
CMD ["./hello"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 只构建某一阶段的镜像
可以使用as来为某一阶段命名,例如
FROM golang:alpine as builder
1
当我们只想构建builder 阶段的镜像时,增加--target=builder
docker build --target builder -t username/imagename:tag
1
# 构建时从其它镜像复制文件
COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf
1
上次更新: 2023/01/11