Docker 多阶段构建是一种在 Dockerfile 中使用多个 FROM 指令来构建镜像的方法。它的主要目的是减小最终生成的镜像大小,并提高镜像的安全性和可维护性。多阶段构建通常用于编译和打包应用程序的过程中。
编写 Dockerfile
# 第一阶段:构建应用程序
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
# 第二阶段:生成最终镜像
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
这个 Dockerfile 使用了多阶段构建来构建一个 Go 应用程序的镜像,并将最终生成的应用程序部署到一个轻量级的 Alpine Linux 容器中。
这个 Dockerfile 的工作原理如下:
-
第一阶段使用
golang:1.16
作为基础镜像,并将工作目录设置为/app
。然后,它将当前目录下的所有文件复制到容器中,并使用 Go 编译器编译应用程序。