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
987 B
Docker
36 lines
987 B
Docker
FROM node:22-alpine 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
|
|
|
|
FROM node:22-alpine
|
|
WORKDIR /app/backend
|
|
ENV NODE_ENV=production
|
|
ENV NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
|
|
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 4011
|
|
CMD ["node", "dist/server.js"]
|