Myluzh Blog

Strive to become a dream architect.

Docker多阶段构建

发布时间: 2024-2-22 文章作者: myluzh 分类名称: Docker


0x01 概述
Docker 分阶段构建是指在 Dockerfile 中使用多个 FROM 指令来分割构建过程,将整个构建过程分为多个阶段。每个阶段可以有自己的基础镜像,执行特定的构建步骤,并且可以从前一个阶段复制构建结果。最终只有最后一个阶段的构建结果会被保留在最终的镜像中,其它阶段的中间产物不会被包含在最终的镜像中。
分阶段构建的优点包括:
  1. 减小镜像大小:通过将构建过程分解为多个阶段,可以避免将构建工具和中间产物包含在最终的镜像中,从而减小镜像的大小。
  2. 加快构建速度:每个阶段可以并行执行,节省构建时间。
  3. 更好的可维护性:分阶段构建可以更清晰地组织构建过程,使得 Dockerfile 更易于阅读和维护。

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 镜像作为基础镜像,并从第一阶段复制依赖环境,然后复制应用代码,最终运行应用。这样可以减小最终镜像的大小且加快构建速度。

标签: docker 多阶段 构建 builder

发表评论