FROM node:20-alpine AS builder WORKDIR /app/backend RUN corepack enable && corepack prepare pnpm@10.6.5 --activate # Use Gitea npm registry for @bytelyst/* packages COPY .npmrc.docker ./.npmrc COPY backend/package.json ./package.json RUN --mount=type=secret,id=gitea_npm_token \ TOKEN=$(cat /run/secrets/gitea_npm_token) && \ echo "//gitea.bytelyst.com:3300/:_authToken=$TOKEN" >> .npmrc && \ 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:20-alpine 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/ RUN chown -R node:node /app USER node EXPOSE 4018 CMD ["node", "dist/backend/src/bootstrap.js"]