designops-gateway / build (push) Failing after 1m11s
- 7 unit tests (op-to-svg/config/dtcg) pass via node --test - review page: comment form + asset preview; assets route MIME by kind - gateway Dockerfile (node:24-alpine multi-stage + op binary) - Helm chart (deployment/service/ingress/pvc + secret injection)
28 lines
924 B
Docker
28 lines
924 B
Docker
# @module: gateway-dockerfile
|
|
# @path: gateway/Dockerfile
|
|
# @description: DesignOps Gateway 镜像构建(Node 24 + 编译产物 + OpenPencil 二进制)
|
|
# @zone: action
|
|
# @tier: Tier2-support
|
|
#
|
|
# @skill: gateway-docker-build — build gateway image with OpenPencil headless CLI
|
|
# @rule: credentials-not-in-repo P0 — secrets injected at runtime, never baked
|
|
FROM node:24-alpine AS build
|
|
WORKDIR /app
|
|
COPY package.json pnpm-lock.yaml ./
|
|
RUN corepack enable && pnpm install --frozen-lockfile
|
|
COPY tsconfig.json ./
|
|
COPY src ./src
|
|
RUN pnpm build
|
|
|
|
FROM node:24-alpine AS runtime
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
COPY package.json pnpm-lock.yaml ./
|
|
RUN corepack enable && pnpm install --frozen-lockfile --prod
|
|
COPY --from=build /app/dist ./dist
|
|
# OpenPencil headless CLI (编译产物,由 CI 阶段注入,见 infra/gitops)
|
|
COPY op /usr/local/bin/op
|
|
RUN mkdir -p /data /assets
|
|
EXPOSE 8080
|
|
CMD ["node", "dist/index.js"]
|