背景
Docker 17.05或更高版本支持多阶段构建镜像了,之前我都是在centos的基础镜像里手动安装node和nginx,然后再打包部署。
这次就用多阶段构建镜像重构一下Dockerfile,大体思路就是先FROM node用来打包,然后再FROM nginx把打包好的静态文件拷贝打nginx镜像中。
以下是最终的Dockerfile,经过实践是完全可行的,详细的步骤都写在注释中了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| FROM node:lts as builder LABEL authors="hanjiawei"
# 设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 在容器中创建好项目目录 RUN mkdir app # 设置好工作目录 WORKDIR /app # 拷贝package文件到镜像里的/app目录下 COPY package.json . # 安装依赖 RUN npm install --registry=https://registry.npm.taobao.org # 拷贝项目文件 这里要注意.gitignore里的内容 COPY . . # 打包项目 RUN npm run build
FROM nginx:1.25.1 # 从上面的builder镜像里拷贝构建好的项目文件到当前镜像中 COPY --from=builder /app/dist /usr/share/nginx/html
|