2ee6961634
Test steps: bash docker/scripts/generate-config.sh --mode private [--local-ip 192.168.0.113] bash ./deploy.sh --mode private Front-end directly inlines NEXT_PUBLIC_API_URL, directly connecting to the backend. CORS (production) supports comma-separated multiple origins, with localhost and local network IPs included by default.
42 lines
857 B
Docker
42 lines
857 B
Docker
# 构建阶段
|
|
FROM node:18-alpine AS builder
|
|
|
|
ARG HTTP_PROXY
|
|
ARG HTTPS_PROXY
|
|
ARG NO_PROXY
|
|
|
|
ENV http_proxy ${HTTP_PROXY} \
|
|
https_proxy ${HTTPS_PROXY} \
|
|
no_proxy ${NO_PROXY}
|
|
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm ci
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
# 运行阶段
|
|
FROM node:18-alpine AS runtime
|
|
|
|
WORKDIR /app
|
|
|
|
# 复制预构建的文件
|
|
COPY --from=builder /app/dist ./dist
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
COPY --from=builder /app/package.json ./
|
|
COPY health-check.js ./
|
|
|
|
# 创建用户并设置权限
|
|
RUN addgroup -g 1001 -S nodejs && \
|
|
adduser -S backend -u 1001 -G nodejs && \
|
|
chown -R backend:nodejs /app
|
|
|
|
USER backend
|
|
EXPOSE 3001
|
|
|
|
# 使用Node.js脚本做健康检查(替代curl)
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD node health-check.js
|
|
|
|
CMD ["node", "dist/server.js"]
|