0x01 概述
Docker 分阶段构建是指在 Dockerfile 中使用多个 FROM 指令来分割构建过程,将整个构建过程分为多个阶段。每个阶段可以有自己的基础镜像,执行特定的构建步骤,并且可以从前一个阶段复制构建结果。最终只有最后一个阶段的构建结果会被保留在最终的镜像中,其它阶段的中间产物不会被包含在最终的镜像中。
分阶段构建的优点包括:
0x02 示例
下面是一个使用 Docker 分阶段构建 Python 应用的示例:
# 第一阶段:构建依赖环境 FROM python:3.8 AS builder WORKDIR /app COPY requirements.txt . RUN pip install --upgrade pip RUN pip install -r requirements.txt # 第二阶段:构建应用 FROM python:3.8-slim WORKDIR /app COPY --from=builder /usr/local/lib/python3.8/site-packages/ /usr/local/lib/python3.8/site-packages/ COPY . . CMD ["python", "app.py"]
在这个示例中,第一阶段使用 python:3.8 镜像作为基础镜像,安装应用的依赖库;第二阶段使用 python:3.8-slim 镜像作为基础镜像,并从第一阶段复制依赖环境,然后复制应用代码,最终运行应用。这样可以减小最终镜像的大小且加快构建速度。