# Build context: learning_ai_invt_trdg/ (monorepo root) # docker-compose passes GITEA_NPM_TOKEN as a build arg for the private @bytelyst registry # # --- Stage 1: Build --- FROM node:18-alpine AS builder RUN corepack enable && corepack prepare pnpm@10.6.5 --activate WORKDIR /app ARG GITEA_NPM_TOKEN ENV GITEA_NPM_TOKEN=${GITEA_NPM_TOKEN} # Copy workspace root files first (layer cache) # NOTE: After switching @bytelyst/* deps from link: to registry, run: # GITEA_NPM_TOKEN= pnpm install # to regenerate pnpm-lock.yaml, then restore --frozen-lockfile here. COPY .npmrc pnpm-workspace.yaml pnpm-lock.yaml* ./ COPY package.json ./package.json COPY backend/package.json ./backend/package.json # Install backend deps only RUN pnpm install --filter @bytelyst/trading-backend # Copy source (backend + shared types used by tsconfig rootDir "..") COPY backend/ ./backend/ COPY shared/ ./shared/ WORKDIR /app/backend RUN pnpm run build # --- Stage 2: Production --- FROM node:18-alpine RUN corepack enable && corepack prepare pnpm@10.6.5 --activate WORKDIR /app ARG GITEA_NPM_TOKEN ENV GITEA_NPM_TOKEN=${GITEA_NPM_TOKEN} COPY .npmrc pnpm-workspace.yaml pnpm-lock.yaml* ./ COPY package.json ./package.json COPY backend/package.json ./backend/package.json RUN pnpm install --filter @bytelyst/trading-backend --prod COPY --from=builder /app/backend/dist ./backend/dist RUN chown -R node:node /app USER node WORKDIR /app/backend EXPOSE 4018 CMD ["node", "dist/backend/src/bootstrap.js"]