learning_ai_invt_trdg/backend/Dockerfile
Saravana Achu Mac 5e07ac040d feat: make backend Docker-ready and web Vercel-ready
- Switch @bytelyst/* deps from link: to private Gitea registry (^0.x)
- Add .npmrc pointing to gitea.bytelyst.com private npm registry
- Rewrite backend/Dockerfile: monorepo root context, pnpm workspace,
  correct EXPOSE 4018, CMD node dist/backend/src/bootstrap.js
- Move vercel.json to repo root with pnpm filter build commands
- Remove web/Dockerfile and web/nginx.conf (web is Vercel-only)
- Remove web service from docker-compose.yml (backend Docker only)
- Document GITEA_NPM_TOKEN requirement in .env.example
- Fix start script path: dist/backend/src/bootstrap.js (rootDir: "..")

PREREQUISITE: Set GITEA_NPM_TOKEN and run pnpm install to regenerate
pnpm-lock.yaml before first Docker build.

Vercel settings: Root Directory = repo root, add GITEA_NPM_TOKEN env var.
Docker build: GITEA_NPM_TOKEN=<token> docker compose build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 19:05:35 -07:00

55 lines
1.5 KiB
Docker

# 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=<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"]