Initial commit: HZHub project setup with RuoYi-AI base
This commit is contained in:
77
hzhub-admin/apps/web-antd/Dockerfile
Normal file
77
hzhub-admin/apps/web-antd/Dockerfile
Normal file
@@ -0,0 +1,77 @@
|
||||
# 构建阶段
|
||||
FROM node:22-alpine AS builder
|
||||
|
||||
# 接收后端 API 地址(docker-compose 传入)
|
||||
ARG VITE_GLOB_API_URL=http://localhost:6039
|
||||
ENV VITE_GLOB_API_URL=${VITE_GLOB_API_URL}
|
||||
|
||||
# 设置环境变量 - 优化资源使用,增加内存限制
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
ENV NODE_OPTIONS=--max-old-space-size=16384
|
||||
|
||||
# 安装 pnpm 和设置时区
|
||||
RUN npm i -g corepack && corepack enable && \
|
||||
apk add --no-cache tzdata && \
|
||||
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
||||
echo "Asia/Shanghai" > /etc/timezone
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 先复制 package 文件(优化 Docker 缓存)
|
||||
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml turbo.json .npmrc ./
|
||||
|
||||
# 复制 internal 目录(包含 @vben/vite-config, @vben/tsconfig 等)
|
||||
COPY internal ./internal
|
||||
|
||||
# 复制 scripts 目录(turbo 依赖)
|
||||
COPY scripts ./scripts
|
||||
|
||||
# 复制 packages 目录(workspace 依赖)
|
||||
COPY packages ./packages
|
||||
|
||||
# 复制 web-antd 应用
|
||||
COPY apps/web-antd ./apps/web-antd
|
||||
|
||||
# 安装依赖(使用 workspace)
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
|
||||
|
||||
# 构建 workspace 依赖包(使用 turbo)
|
||||
RUN pnpm run build --filter="./packages/**"
|
||||
|
||||
# 构建 web-antd 应用(直接构建,避免 turbo 过滤器问题)
|
||||
WORKDIR /app/apps/web-antd
|
||||
RUN pnpm run build:prod
|
||||
WORKDIR /app
|
||||
|
||||
# 生产阶段 - 使用 nginx 部署
|
||||
FROM nginx:stable-alpine AS production
|
||||
|
||||
# 安装 tzdata 并设置时区
|
||||
RUN apk add --no-cache tzdata && \
|
||||
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
||||
echo "Asia/Shanghai" > /etc/timezone
|
||||
|
||||
# 配置 nginx 支持 mjs
|
||||
RUN echo "types { application/javascript js mjs; }" > /etc/nginx/conf.d/mjs.conf \
|
||||
&& rm -rf /etc/nginx/conf.d/default.conf
|
||||
|
||||
# 从构建阶段复制构建产物
|
||||
COPY --from=builder /app/apps/web-antd/dist /usr/share/nginx/html
|
||||
|
||||
# 复制 nginx 配置文件模板
|
||||
COPY apps/web-antd/nginx.conf /etc/nginx/nginx.conf.template
|
||||
|
||||
# 复制启动脚本
|
||||
COPY apps/web-antd/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
RUN chmod +x /docker-entrypoint.sh
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 5666
|
||||
|
||||
# 设置默认后端地址(可被 docker-compose environment 覆盖)
|
||||
ENV UPSTREAM_HOST=127.0.0.1:6039
|
||||
|
||||
# 启动脚本(处理环境变量并启动 nginx)
|
||||
CMD ["/docker-entrypoint.sh"]
|
||||
Reference in New Issue
Block a user