xykj-plus/claude-ecc/admin-xy/web/Dockerfile
2026-06-13 13:48:51 +08:00

56 lines
1.8 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ── Stage 1: Build ──────────────────────────────────────────────────────────
FROM node:24-alpine AS build
WORKDIR /app
# build context 为仓库根;先复制 lock 文件,充分利用层缓存
COPY admin-xy/web/package.json admin-xy/web/package-lock.json ./
RUN npm ci --no-audit --no-fund
# 复制前端源码并构建
# vite 自身的 transform 流水线不依赖 tsc 解析,类型检查由本地开发阶段保障。
COPY admin-xy/web/ .
RUN npx vite build
# ── Stage 2: Runtime ─────────────────────────────────────────────────────────
FROM nginx:stable-alpine AS runtime
# 移除默认配置,写入自定义配置
RUN rm /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html
# nginx 配置SPA fallback + 反代 /api 到后端
RUN cat > /etc/nginx/conf.d/admin-xy.conf <<'EOF'
server {
listen 9001;
server_name _;
root /usr/share/nginx/html;
index index.html;
# SPA fallback所有非文件请求都返回 index.html
location / {
try_files $uri $uri/ /index.html;
}
# 反代 /api 到后端服务
location /api/ {
proxy_pass http://server:9010/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
EOF
EXPOSE 9001
CMD ["nginx", "-g", "daemon off;"]