# 构建 Vite 前端产物。 FROM oven/bun:1.3.13 AS web-build WORKDIR /app/web COPY web/package.json web/bun.lock ./ COPY packages/contracts/package.json /app/packages/contracts/package.json COPY packages/contracts /app/packages/contracts RUN --mount=type=cache,target=/root/.bun/install/cache bun install --cache-dir=/root/.bun/install/cache COPY VERSION /app/VERSION COPY CHANGELOG.md /app/CHANGELOG.md COPY web ./ RUN bun run build # 构建后台管理端。它最终与前台一起由同一个 Nginx 端口提供服务。 FROM oven/bun:1.3.13 AS admin-build WORKDIR /app/admin COPY admin/package.json admin/package-lock.json ./ COPY packages/contracts/package.json /app/packages/contracts/package.json COPY packages/contracts /app/packages/contracts RUN npm ci --ignore-scripts COPY admin ./ RUN npm run build # 运行镜像:提供前台和管理台静态资源;API 网关由同一 compose 中的 server 服务通过 Nginx 同源反代。 FROM nginx:1.27-alpine COPY --from=web-build /app/web/dist /usr/share/nginx/html COPY --from=admin-build /app/admin/dist /usr/share/nginx/html/admin COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 3000