|
@@ -1,4 +1,28 @@
|
|
|
-FROM registry.cn-chengdu.aliyuncs.com/reghao/nginx_npm:1.21
|
|
|
|
|
|
|
+# --- 阶段一:构建阶段 (Build Stage) ---
|
|
|
|
|
+FROM registry.cn-chengdu.aliyuncs.com/azysrv/node:16.20.2-buster-slim AS build-stage
|
|
|
|
|
+
|
|
|
|
|
+ARG BUILD_ENV
|
|
|
|
|
+ENV NPM_CONFIG_REGISTRY=https://registry.npmmirror.com
|
|
|
|
|
+
|
|
|
|
|
+# 设置容器内的工作目录
|
|
|
|
|
+WORKDIR /app
|
|
|
|
|
+
|
|
|
|
|
+# 利用 Docker 缓存机制:先拷贝 package.json
|
|
|
|
|
+COPY package*.json ./
|
|
|
|
|
+
|
|
|
|
|
+# 安装依赖
|
|
|
|
|
+RUN npm install
|
|
|
|
|
+
|
|
|
|
|
+# 拷贝所有源代码
|
|
|
|
|
+COPY . .
|
|
|
|
|
+
|
|
|
|
|
+# 执行打包命令(通常生成 dist 目录)
|
|
|
|
|
+RUN npm run build
|
|
|
|
|
+
|
|
|
|
|
+# --- 阶段二:生产阶段 (Production Stage) ---
|
|
|
|
|
+FROM registry.cn-chengdu.aliyuncs.com/azysrv/nginx_npm:1.21 AS production-stage
|
|
|
|
|
+# --- 阶段二重新声明变量 ---
|
|
|
|
|
+ARG BUILD_ENV
|
|
|
|
|
|
|
|
RUN sed -i 's/8080/4040/' /etc/nginx/conf.d/http.conf
|
|
RUN sed -i 's/8080/4040/' /etc/nginx/conf.d/http.conf
|
|
|
-COPY ./dist/ /opt/webroot/
|
|
|
|
|
|
|
+COPY --from=build-stage /app/dist/ /opt/webroot/
|