Worker was crashing with MODULE_NOT_FOUND for @codeboard/database because the package only had TypeScript source and no build step. Added tsconfig.json, changed build script to compile TS, and updated Dockerfile to copy compiled dist into worker stage.
56 lines
2.5 KiB
Docker
56 lines
2.5 KiB
Docker
FROM node:20-alpine AS base
|
|
RUN apk add --no-cache git
|
|
WORKDIR /app
|
|
|
|
FROM base AS deps
|
|
COPY package.json package-lock.json* ./
|
|
COPY apps/web/package.json ./apps/web/
|
|
COPY apps/worker/package.json ./apps/worker/
|
|
COPY packages/shared/package.json ./packages/shared/
|
|
COPY packages/parser/package.json ./packages/parser/
|
|
COPY packages/llm/package.json ./packages/llm/
|
|
COPY packages/diagrams/package.json ./packages/diagrams/
|
|
COPY packages/database/package.json ./packages/database/
|
|
RUN npm install --production=false
|
|
|
|
FROM base AS builder
|
|
COPY --from=deps /app/node_modules ./node_modules
|
|
COPY . .
|
|
RUN npx prisma generate --schema=packages/database/prisma/schema.prisma
|
|
RUN npx turbo build
|
|
|
|
FROM base AS web
|
|
RUN addgroup --system --gid 1001 nodejs && \
|
|
adduser --system --uid 1001 nextjs
|
|
COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/standalone ./
|
|
COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static
|
|
COPY --from=builder --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public
|
|
COPY --from=builder --chown=nextjs:nodejs /app/packages/database/prisma ./packages/database/prisma
|
|
USER nextjs
|
|
EXPOSE 3000
|
|
ENV PORT=3000 HOSTNAME="0.0.0.0"
|
|
CMD ["node", "apps/web/server.js"]
|
|
|
|
FROM base AS worker
|
|
RUN addgroup --system --gid 1001 nodejs && \
|
|
adduser --system --uid 1001 workeruser
|
|
COPY --from=deps /app/node_modules ./node_modules
|
|
COPY --from=builder /app/apps/worker/dist ./apps/worker/dist
|
|
COPY --from=builder /app/packages/shared/dist ./packages/shared/dist
|
|
COPY --from=builder /app/packages/parser/dist ./packages/parser/dist
|
|
COPY --from=builder /app/packages/llm/dist ./packages/llm/dist
|
|
COPY --from=builder /app/packages/diagrams/dist ./packages/diagrams/dist
|
|
COPY --from=builder /app/packages/database/dist ./packages/database/dist
|
|
COPY --from=builder /app/packages/database/package.json ./packages/database/
|
|
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
|
|
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
|
|
COPY --from=builder /app/packages/database/prisma ./packages/database/prisma
|
|
COPY --from=builder /app/package.json ./
|
|
COPY --from=builder /app/apps/worker/package.json ./apps/worker/
|
|
COPY --from=builder /app/packages/shared/package.json ./packages/shared/
|
|
COPY --from=builder /app/packages/parser/package.json ./packages/parser/
|
|
COPY --from=builder /app/packages/llm/package.json ./packages/llm/
|
|
COPY --from=builder /app/packages/diagrams/package.json ./packages/diagrams/
|
|
USER workeruser
|
|
CMD ["node", "apps/worker/dist/index.js"]
|