Docker多阶段镜像制作

编译阶段 –> 目的编译并获取编译后的二进制可执行文件

1
2
3
4
5
6
FROM golang:1.20-alpine AS builder # 使用go镜像作为编译镜像
WORKDIR /build # 配置工作目录
COPY . . # 将源代码等文件拷贝到工作目录
RUN apk add --no-cache git make tzdata \ # 安装编译需要的一些依赖包
&& GOOS=$TARGETOS GOARCH=$TARGETARCH make clean build # 使用makefile编译
RUN go build -o app . # 使用命令直接编译

运行环境 –> 将编译阶段的编译好的二进制可执行文件拷贝

1
2
3
4
5
6
7
FROM alpine
RUN apk add --no-cache curl grep
ENV TZ=Asia/Shanghai

COPY --from=builder /build/app / # 将编译阶段的工作目录下的二进制文件拷贝到运行环境的根目录
EXPOSE 10000
CMD ["/app"] # 执行可执行文件