From 817a76f8d5ad8ce6c136e0411a00bbf59422f6c2 Mon Sep 17 00:00:00 2001 From: "groombook-paperclip[bot]" <268890960+groombook-paperclip[bot]@users.noreply.github.com> Date: Wed, 18 Mar 2026 01:34:26 +0000 Subject: [PATCH] Fix Docker build: compile TS packages for runtime Fixes ERR_UNKNOWN_FILE_EXTENSION at container startup by compiling @groombook/types and @groombook/db to dist/ before the runtime stage, and copying only compiled JS instead of raw TypeScript source. Co-Authored-By: Paperclip --- apps/api/Dockerfile | 10 +++++++--- packages/db/package.json | 3 ++- packages/types/package.json | 3 ++- packages/types/tsconfig.json | 3 ++- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile index 4fbcb3f..97526cf 100644 --- a/apps/api/Dockerfile +++ b/apps/api/Dockerfile @@ -14,7 +14,9 @@ RUN pnpm install --frozen-lockfile FROM deps AS builder COPY packages/ packages/ COPY apps/api/ apps/api/ -RUN pnpm --filter @groombook/api build +RUN pnpm --filter @groombook/types build && \ + pnpm --filter @groombook/db build && \ + pnpm --filter @groombook/api build # Runtime FROM node:20-alpine AS runner @@ -29,8 +31,10 @@ COPY packages/types/package.json packages/types/ RUN pnpm install --frozen-lockfile --prod COPY --from=builder /app/apps/api/dist apps/api/dist -COPY --from=builder /app/packages/db packages/db -COPY --from=builder /app/packages/types packages/types +COPY --from=builder /app/packages/db/dist packages/db/dist +COPY --from=builder /app/packages/db/package.json packages/db/package.json +COPY --from=builder /app/packages/types/dist packages/types/dist +COPY --from=builder /app/packages/types/package.json packages/types/package.json EXPOSE 3000 CMD ["node", "apps/api/dist/index.js"] diff --git a/packages/db/package.json b/packages/db/package.json index f446d58..ff1747a 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -2,9 +2,10 @@ "name": "@groombook/db", "version": "0.0.1", "private": true, - "main": "./src/index.ts", + "main": "./dist/index.js", "types": "./src/index.ts", "scripts": { + "build": "tsc", "generate": "drizzle-kit generate", "migrate": "drizzle-kit migrate", "seed": "tsx src/seed.ts", diff --git a/packages/types/package.json b/packages/types/package.json index 3cb32fc..e1cb6c0 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -2,9 +2,10 @@ "name": "@groombook/types", "version": "0.0.1", "private": true, - "main": "./src/index.ts", + "main": "./dist/index.js", "types": "./src/index.ts", "scripts": { + "build": "tsc", "typecheck": "tsc --noEmit" }, "devDependencies": { diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index 4df90ff..d7595d0 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -5,7 +5,8 @@ "moduleResolution": "NodeNext", "strict": true, "noUncheckedIndexedAccess": true, - "skipLibCheck": true + "skipLibCheck": true, + "outDir": "./dist" }, "include": ["src"] }