The base image approach was reverted for notes and clock due to workspace complexity. The trading repo was still using the base image approach which is causing build failures. Reverting to the vendor approach which works reliably for the monorepo structure. Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
57 lines
1.6 KiB
Docker
57 lines
1.6 KiB
Docker
# Build context: learning_ai_invt_trdg/ (monorepo root)
|
|
# --- Stage 1: Build ---
|
|
FROM node:20-alpine AS builder
|
|
|
|
RUN corepack enable && corepack prepare pnpm@10.6.5 --activate
|
|
|
|
WORKDIR /app
|
|
|
|
ARG BYTELYST_PACKAGE_SOURCE=vendor
|
|
ENV BYTELYST_PACKAGE_SOURCE=${BYTELYST_PACKAGE_SOURCE}
|
|
|
|
# Copy workspace root files first (layer cache)
|
|
COPY .npmrc .pnpmfile.cjs pnpm-workspace.yaml pnpm-lock.yaml* ./
|
|
COPY package.json ./package.json
|
|
COPY backend/package.json ./backend/package.json
|
|
COPY web/package.json ./web/package.json
|
|
COPY mobile/package.json ./mobile/package.json
|
|
|
|
# Vendor packages — @bytelyst/* are file: references that must be present before pnpm install
|
|
COPY vendor/ ./vendor/
|
|
|
|
# Install the workspace graph so shared/ files resolve the same way they do locally.
|
|
RUN pnpm install -r
|
|
|
|
# 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:20-alpine
|
|
|
|
RUN corepack enable && corepack prepare pnpm@10.6.5 --activate
|
|
|
|
WORKDIR /app
|
|
|
|
ARG BYTELYST_PACKAGE_SOURCE=vendor
|
|
ENV BYTELYST_PACKAGE_SOURCE=${BYTELYST_PACKAGE_SOURCE}
|
|
|
|
COPY .npmrc .pnpmfile.cjs pnpm-workspace.yaml pnpm-lock.yaml* ./
|
|
COPY package.json ./package.json
|
|
COPY backend/package.json ./backend/package.json
|
|
COPY vendor/ ./vendor/
|
|
|
|
RUN pnpm install --filter @bytelyst/trading-backend --prod
|
|
RUN mkdir -p /app/node_modules && ln -s /app/backend/node_modules/@bytelyst /app/node_modules/@bytelyst
|
|
|
|
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"]
|