构建 Docker 镜像的时候,我们可以在机器上直接构建,也可以使用容器来构建,保证环境的统一性, 通过容器来构建会有一个问题,就是构建使用到的工具并不需要带入到真正的运行环境, 比如说使用 nodejs 的前端项目, 构建的时候需要 nodejs 或者 npm, 但是运行的时候需要的是 nginx. 多阶段构建即为构建完成后直接将代码塞进运行容器, 不会带入构建环境.

编写 Dockerfile

vim Dockerfile

1
2
3
4
5
6
7
8
FROM node:14.20.1-buster AS build
ADD argus-wfe /argus-wfe
WORKDIR /argus-wfe
RUN yarn && yarn run build


From nginx
COPY --from=build /argus-wfe/dist /usr/share/nginx/html