返回

Docker 多阶段构建的艺术

前端

Docker 多阶段构建 (React 和 Nginx)

Docker 多阶段构建是创造生产就绪的 Docker 镜像的有效方法。它允许你优化你的构建过程并创建更小的镜像。如果你对 Docker 完全陌生,我强烈建议你首先阅读我的文章《理解 Docker 基础》(http://progressivecoder.com/understanding-th…)。

多阶段构建的好处

  1. 镜像更小: 多阶段构建可以通过只包含生产运行时所需的层来创建更小的镜像。这可以提高构建和部署速度,并降低对存储和带宽的需求。
  2. 更快的构建速度: 多阶段构建可以减少构建镜像所需的时间,因为每个阶段都是独立构建的。这在构建大型或复杂的镜像时尤其有用。
  3. 更易维护: 多阶段构建使得维护镜像变得更容易,因为每个阶段都是独立定义的。这可以更容易地识别和修复问题。

开始构建

  1. 创建 Dockerfile: 第一步是创建一个 Dockerfile。这是定义构建过程的文件。一个基本的 Dockerfile 可能如下所示:
FROM node:14-alpine AS builder
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine AS nginx
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
  1. 构建镜像: 一旦你创建了 Dockerfile,就可以使用以下命令构建镜像:
docker build -t my-image .
  1. 运行镜像: 构建镜像后,你就可以使用以下命令运行它:
docker run -p 80:80 my-image

高级技巧

  1. 使用缓存: Docker 可以缓存构建步骤的输出。这可以显著加快构建速度,尤其是当你对镜像进行小的更改时。
  2. 使用标签: 标签可以用于标识镜像的不同版本。这对于跟踪镜像的更改和回滚到以前的版本非常有用。
  3. 使用秘密: 秘密可以用来存储敏感信息,如密码或 API 密钥。这可以防止这些信息被泄露到公共镜像中。
  4. 使用构建参数: 构建参数允许你向构建过程传递变量。这可以用来定制镜像或使其更通用。

结论

Docker 多阶段构建是一种创建生产就绪的 Docker 镜像的有效方法。它可以帮助你优化你的构建过程并创建更小的镜像。如果你还没有尝试过,我强烈建议你尝试一下。