The base image approach is too complex for the current pnpm workspace structure. Products cannot easily use the base image's workspace because pnpm expects all workspace packages to be present during install. Reverting to the proven docker-prep.sh tarball approach for now. Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
36 lines
967 B
Docker
36 lines
967 B
Docker
FROM node:22-slim AS builder
|
|
WORKDIR /app/backend
|
|
|
|
ARG GITEA_NPM_HOST
|
|
ENV NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
ENV NPM_CONFIG_STRICT_SSL=false
|
|
ENV GITEA_NPM_HOST=$GITEA_NPM_HOST
|
|
|
|
RUN npm config set strict-ssl false \
|
|
&& npm install -g pnpm@10.6.5
|
|
|
|
COPY .npmrc.docker ./.npmrc
|
|
COPY .docker-deps/ /app/.docker-deps/
|
|
COPY backend/package.json ./package.json
|
|
RUN --mount=type=secret,id=gitea_npm_token \
|
|
export GITEA_NPM_TOKEN="$(cat /run/secrets/gitea_npm_token 2>/dev/null || echo '')" && \
|
|
pnpm install --ignore-scripts --lockfile=false
|
|
|
|
COPY backend/tsconfig.json ./tsconfig.json
|
|
COPY backend/src/ ./src/
|
|
COPY shared/ ../shared/
|
|
RUN pnpm run build
|
|
|
|
# Production stage
|
|
FROM node:22-slim
|
|
WORKDIR /app/backend
|
|
ENV NODE_ENV=production
|
|
|
|
COPY --from=builder /app/backend/node_modules ./node_modules
|
|
COPY --from=builder /app/backend/package.json ./package.json
|
|
COPY --from=builder /app/backend/dist ./dist
|
|
COPY shared/ ../shared/
|
|
|
|
EXPOSE 4016
|
|
CMD ["node", "dist/server.js"]
|