Files
jenkins-pipeline/Dockerfile/web/admin_web_Dockerfile

44 lines
1.6 KiB
Plaintext
Raw Normal View History

2025-11-20 14:51:44 +08:00
# ===============================
# 1) 依赖安装 + 构建阶段
# ===============================
2026-02-03 19:37:58 +08:00
FROM node:20.15.0-alpine AS builder
2025-11-20 14:51:44 +08:00
2026-02-03 19:37:58 +08:00
# 设定工作目录,后续所有指令基于此,避免路径混乱
2025-11-20 14:51:44 +08:00
WORKDIR /app
2026-02-03 19:37:58 +08:00
# 配置npm国内源仅1次配置后续所有npm命令自动复用删除冗余的registry传参
ENV NPM_REGISTRY=https://registry.npmmirror.com/
RUN npm config set registry ${NPM_REGISTRY}
# 先拷贝package.json核心利用Docker层缓存代码不变则不重装依赖
2025-11-20 14:51:44 +08:00
COPY package.json ./
2026-02-03 19:37:58 +08:00
# 安装依赖无需重复写registry已全局配置加快构建
RUN npm install
2025-11-20 14:51:44 +08:00
2026-02-03 19:37:58 +08:00
# 拷贝全部项目代码(放在装依赖后,最大化缓存收益)
2025-11-20 14:51:44 +08:00
COPY . .
2026-02-03 19:37:58 +08:00
# 构建参数默认sitbuild时可通过--build-arg覆盖如prod/test
2025-11-20 14:51:44 +08:00
ARG BUILD_ENV=sit
2026-02-03 19:37:58 +08:00
# 注入环境变量,确保构建脚本能读取到(部分框架需要环境变量透传)
2025-11-20 14:51:44 +08:00
ENV BUILD_ENV=${BUILD_ENV}
2026-02-03 19:37:58 +08:00
# 执行环境构建命令兼容package.json的build:sit/build:test/build:prod
2025-11-20 14:51:44 +08:00
RUN npm run build:${BUILD_ENV}
# ===============================
2026-02-03 19:37:58 +08:00
# 2) 生产镜像阶段轻量Nginx仅保留构建产物
2025-11-20 14:51:44 +08:00
# ===============================
2026-02-03 19:37:58 +08:00
FROM nginx:stable-alpine AS runtime
2025-11-20 14:51:44 +08:00
2026-02-03 19:37:58 +08:00
# 暴露80端口Docker声明方便容器映射不影响实际运行
2025-11-20 14:51:44 +08:00
EXPOSE 80
2026-02-03 19:37:58 +08:00
# 复制自定义Nginx配置解决路由404+禁用所有缓存,核心修正)
COPY ./default.conf /etc/nginx/conf.d/default.conf
# 从构建阶段拷贝最终构建产物到Nginx静态资源根目录
COPY --from=builder /app/dist /usr/share/nginx/html
2025-11-20 14:51:44 +08:00
2026-02-03 19:37:58 +08:00
# Nginx官方镜像默认自动启动nginx无需额外CMD/ENTRYPOINT