1+ # syntax=docker/dockerfile:1.7
12# =============================================================================
23# Sub2API Multi-Stage Dockerfile
34# =============================================================================
78# =============================================================================
89
910ARG NODE_IMAGE=node:24-alpine
10- ARG GOLANG_IMAGE=golang:1.26.4 -alpine
11+ ARG GOLANG_IMAGE=golang:1.26.5 -alpine
1112ARG ALPINE_IMAGE=alpine:3.21
1213ARG POSTGRES_IMAGE=postgres:18-alpine
1314ARG GOPROXY=https://goproxy.cn,direct
1415ARG GOSUMDB=sum.golang.google.cn
16+ ARG NPM_CONFIG_REGISTRY=
1517
1618# -----------------------------------------------------------------------------
1719# Stage 1: Frontend Builder
1820# -----------------------------------------------------------------------------
1921FROM ${NODE_IMAGE} AS frontend-builder
22+ ARG NPM_CONFIG_REGISTRY
2023
2124WORKDIR /app/frontend
2225ENV NODE_OPTIONS=--max-old-space-size=4096
@@ -26,7 +29,9 @@ RUN corepack enable && corepack prepare pnpm@11.5.2 --activate
2629
2730# Install dependencies first (better caching)
2831COPY frontend/package.json frontend/pnpm-lock.yaml frontend/pnpm-workspace.yaml ./
29- RUN pnpm install --frozen-lockfile
32+ RUN --mount=type=cache,id=sub2api-pnpm-store,target=/root/.local/share/pnpm/store \
33+ if [ -n "${NPM_CONFIG_REGISTRY}" ]; then pnpm config set registry "${NPM_CONFIG_REGISTRY}" ; fi && \
34+ pnpm install --frozen-lockfile --prefer-offline
3035
3136# Copy frontend source and build.
3237# LegalDocumentView.vue (admin-compliance gate) build-time imports
0 commit comments