Traefik integration for Docker Compose (bundled or upstream) #36
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objective
Add Traefik reverse proxy support to the Docker Compose setup with two deployment modes:
Requirements
Bundled Mode
Upstream Mode
Configuration
Environment variables to control behavior:
Implementation
Acceptance Criteria
#1 reading from stdin 1.58kB done
#1 DONE 0.0s
#2 [postgres internal] load build definition from Dockerfile
#2 transferring dockerfile: 766B done
#2 DONE 0.0s
#3 [postgres internal] load metadata for docker.io/library/postgres:17-alpine
#3 DONE 0.0s
#4 [api internal] load build definition from Dockerfile
#4 transferring dockerfile: 2.98kB done
#4 DONE 0.2s
#5 [web internal] load build definition from Dockerfile
#5 transferring dockerfile: 3.08kB done
#5 DONE 0.2s
#6 [postgres internal] load .dockerignore
#6 transferring context: 2B done
#6 DONE 0.2s
#7 [api internal] load metadata for docker.io/library/node:20-alpine
#7 ...
#8 [postgres 1/5] FROM docker.io/library/postgres:17-alpine
#8 DONE 0.0s
#9 [postgres internal] load build context
#9 transferring context: 78B done
#9 DONE 0.0s
#10 [postgres 3/5] RUN git clone --branch v0.7.4 https://github.com/pgvector/pgvector.git /tmp/pgvector && cd /tmp/pgvector && make OPTFLAGS="" with_llvm=no && make install with_llvm=no && rm -rf /tmp/pgvector
#10 CACHED
#11 [postgres 2/5] RUN apk add --no-cache --virtual .build-deps git build-base
#11 CACHED
#12 [postgres 4/5] RUN apk del .build-deps
#12 CACHED
#13 [postgres 5/5] COPY init-scripts/ /docker-entrypoint-initdb.d/
#13 CACHED
#7 [web internal] load metadata for docker.io/library/node:20-alpine
#7 ...
#14 [postgres] exporting to image
#14 exporting layers done
#14 writing image sha256:991da172658093c6e313397347b42b0c01169f4bb7410f6a8dbc76f61044ae0a done
#14 naming to docker.io/library/mosaic-stack-postgres 0.0s done
#14 DONE 0.1s
#15 [postgres] resolving provenance for metadata file
#15 DONE 0.0s
#7 [web internal] load metadata for docker.io/library/node:20-alpine
#7 DONE 0.5s
#16 [web internal] load .dockerignore
#16 transferring context: 2B done
#16 DONE 0.1s
#17 [api base 1/5] FROM docker.io/library/node:20-alpine@sha256:09e2b3d9726018aecf269bd35325f46bf75046a643a66d28360ec71132750ec8
#17 CACHED
#18 [api internal] load build context
#18 transferring context: 834.20kB 0.1s done
#18 DONE 0.2s
#19 [web internal] load build context
#19 transferring context: 3.98MB 0.1s done
#19 DONE 0.4s
#20 [api base 2/5] RUN corepack enable && corepack prepare pnpm@10.19.0 --activate
#20 0.730 Preparing pnpm@10.19.0 for immediate activation...
#20 DONE 2.8s
#21 [web base 3/5] WORKDIR /app
#21 DONE 0.2s
#22 [web base 4/5] COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
#22 DONE 0.2s
#23 [web base 5/5] COPY turbo.json ./
#23 DONE 0.1s
#24 [api deps 1/5] COPY packages/shared/package.json ./packages/shared/
#24 DONE 0.1s
#25 [api deps 2/5] COPY packages/ui/package.json ./packages/ui/
#25 DONE 0.2s
#26 [api deps 3/5] COPY packages/config/package.json ./packages/config/
#26 DONE 0.2s
#27 [web base 4/5] COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
#27 CACHED
#28 [web base 5/5] COPY turbo.json ./
#28 CACHED
#29 [web deps 3/5] COPY packages/config/package.json ./packages/config/
#29 CACHED
#30 [web deps 1/5] COPY packages/shared/package.json ./packages/shared/
#30 CACHED
#31 [web deps 2/5] COPY packages/ui/package.json ./packages/ui/
#31 CACHED
#32 [web deps 4/5] COPY apps/web/package.json ./apps/web/
#32 ...
#33 [api deps 4/5] COPY apps/api/package.json ./apps/api/
#33 DONE 0.2s
#32 [web deps 4/5] COPY apps/web/package.json ./apps/web/
#32 DONE 0.2s
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 ...
#35 [api production 3/17] RUN apk add --no-cache dumb-init
#35 1.750 (1/1) Installing dumb-init (1.2.5-r3)
#35 1.759 Executing busybox-1.37.0-r30.trigger
#35 1.771 OK: 10.9 MiB in 19 packages
#35 DONE 1.9s
#36 [api production 4/17] RUN addgroup -g 1001 -S nodejs && adduser -S nestjs -u 1001
#36 DONE 0.7s
#37 [web production 4/17] RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
#37 DONE 0.7s
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 1.209 Scope: all 5 workspace projects
#34 ...
#38 [api production 5/17] WORKDIR /app
#38 DONE 0.3s
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 1.509 Lockfile is up to date, resolution step is skipped
#34 ...
#39 [web production 5/17] WORKDIR /app
#39 DONE 0.3s
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 1.672 Progress: resolved 1, reused 0, downloaded 0, added 0
#34 ...
#40 [api production 6/17] COPY --chown=nestjs:nodejs pnpm-workspace.yaml package.json pnpm-lock.yaml ./
#40 DONE 0.2s
#41 [web production 6/17] COPY --chown=nextjs:nodejs pnpm-workspace.yaml package.json pnpm-lock.yaml ./
#41 DONE 0.2s
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 1.993 Packages: +300
#34 1.993 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#34 ...
#42 [api production 7/17] COPY --chown=nestjs:nodejs turbo.json ./
#42 DONE 0.2s
#43 [web production 7/17] COPY --chown=nextjs:nodejs turbo.json ./
#43 DONE 0.2s
#44 [api production 8/17] COPY --chown=nestjs:nodejs packages/shared/package.json ./packages/shared/
#44 DONE 0.2s
#45 [web production 8/17] COPY --chown=nextjs:nodejs packages/shared/package.json ./packages/shared/
#45 DONE 0.2s
#46 [web production 9/17] COPY --chown=nextjs:nodejs packages/ui/package.json ./packages/ui/
#46 ...
#47 [api production 9/17] COPY --chown=nestjs:nodejs packages/ui/package.json ./packages/ui/
#47 DONE 0.3s
#46 [web production 9/17] COPY --chown=nextjs:nodejs packages/ui/package.json ./packages/ui/
#46 DONE 0.3s
#48 [web production 10/17] COPY --chown=nextjs:nodejs packages/config/package.json ./packages/config/
#48 ...
#49 [api production 10/17] COPY --chown=nestjs:nodejs packages/config/package.json ./packages/config/
#49 DONE 0.4s
#48 [web production 10/17] COPY --chown=nextjs:nodejs packages/config/package.json ./packages/config/
#48 DONE 0.4s
#50 [web production 11/17] COPY --chown=nextjs:nodejs apps/web/package.json ./apps/web/
#50 ...
#51 [api production 11/17] COPY --chown=nestjs:nodejs apps/api/package.json ./apps/api/
#51 DONE 0.4s
#50 [web production 11/17] COPY --chown=nextjs:nodejs apps/web/package.json ./apps/web/
#50 DONE 0.4s
#52 [web production 12/17] RUN pnpm install --prod --frozen-lockfile
#52 1.446 Scope: all 5 workspace projects
#52 1.711 Lockfile is up to date, resolution step is skipped
#52 1.871 Progress: resolved 1, reused 0, downloaded 0, added 0
#52 2.285 Packages: +175
#52 2.285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#52 2.971 Progress: resolved 175, reused 0, downloaded 0, added 0
#52 4.022 Progress: resolved 175, reused 0, downloaded 31, added 14
#52 5.045 Progress: resolved 175, reused 0, downloaded 58, added 56
#52 6.058 Progress: resolved 175, reused 0, downloaded 86, added 78
#52 ...
#53 [api deps 5/5] RUN pnpm install --frozen-lockfile
#53 1.198 Scope: all 5 workspace projects
#53 1.461 Lockfile is up to date, resolution step is skipped
#53 1.639 Progress: resolved 1, reused 0, downloaded 0, added 0
#53 2.204 Packages: +690
#53 2.204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#53 2.646 Progress: resolved 690, reused 0, downloaded 11, added 3
#53 3.647 Progress: resolved 690, reused 0, downloaded 152, added 150
#53 3.737
#53 3.737 ╭───────────────────────────────────────────────╮
#53 3.737 │ │
#53 3.737 │ Update available! 10.19.0 → 10.28.2. │
#53 3.737 │ Changelog: https://pnpm.io/v/10.28.2 │
#53 3.737 │ To update, run: corepack use pnpm@10.28.2 │
#53 3.737 │ │
#53 3.737 ╰───────────────────────────────────────────────╯
#53 3.737
#53 4.654 Progress: resolved 690, reused 0, downloaded 307, added 307
#53 5.688 Progress: resolved 690, reused 0, downloaded 360, added 349
#53 6.707 Progress: resolved 690, reused 0, downloaded 404, added 397
#53 7.836 Progress: resolved 690, reused 0, downloaded 426, added 424
#53 8.848 Progress: resolved 690, reused 0, downloaded 463, added 459
#53 9.889 Progress: resolved 690, reused 0, downloaded 537, added 533
#53 ...
#54 [api production 12/17] RUN pnpm install --prod --frozen-lockfile
#54 1.314 Scope: all 5 workspace projects
#54 1.571 Lockfile is up to date, resolution step is skipped
#54 1.720 Progress: resolved 1, reused 0, downloaded 0, added 0
#54 2.656 Packages: +449
#54 2.656 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#54 2.899 Progress: resolved 449, reused 0, downloaded 0, added 0
#54 3.907 Progress: resolved 449, reused 0, downloaded 42, added 34
#54 5.033 Progress: resolved 449, reused 0, downloaded 117, added 114
#54 5.093
#54 5.093 ╭───────────────────────────────────────────────╮
#54 5.093 │ │
#54 5.093 │ Update available! 10.19.0 → 10.28.2. │
#54 5.093 │ Changelog: https://pnpm.io/v/10.28.2 │
#54 5.093 │ To update, run: corepack use pnpm@10.28.2 │
#54 5.093 │ │
#54 5.093 ╰───────────────────────────────────────────────╯
#54 5.093
#54 6.056 Progress: resolved 449, reused 0, downloaded 138, added 136
#54 ...
#52 [web production 12/17] RUN pnpm install --prod --frozen-lockfile
#52 7.075 Progress: resolved 175, reused 0, downloaded 147, added 143
#52 8.233 Progress: resolved 175, reused 0, downloaded 172, added 171
#52 9.054
#52 9.054 ╭───────────────────────────────────────────────╮
#52 9.054 │ │
#52 9.054 │ Update available! 10.19.0 → 10.28.2. │
#52 9.054 │ Changelog: https://pnpm.io/v/10.28.2 │
#52 9.054 │ To update, run: corepack use pnpm@10.28.2 │
#52 9.054 │ │
#52 9.054 ╰───────────────────────────────────────────────╯
#52 9.054
#52 9.249 Progress: resolved 175, reused 0, downloaded 172, added 172
#52 ...
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 2.692 Progress: resolved 300, reused 0, downloaded 17, added 15
#34 3.707
#34 3.707 ╭───────────────────────────────────────────────╮
#34 3.707 │ │
#34 3.707 │ Update available! 10.19.0 → 10.28.2. │
#34 3.707 │ Changelog: https://pnpm.io/v/10.28.2 │
#34 3.707 │ To update, run: corepack use pnpm@10.28.2 │
#34 3.707 │ │
#34 3.707 ╰───────────────────────────────────────────────╯
#34 3.707
#34 3.749 Progress: resolved 300, reused 0, downloaded 143, added 141
#34 4.827 Progress: resolved 300, reused 0, downloaded 207, added 202
#34 5.951 Progress: resolved 300, reused 0, downloaded 258, added 254
#34 6.971 Progress: resolved 300, reused 0, downloaded 296, added 290
#34 7.975 Progress: resolved 300, reused 0, downloaded 297, added 297
#34 9.645 Progress: resolved 300, reused 0, downloaded 298, added 297
#34 10.65 Progress: resolved 300, reused 0, downloaded 299, added 299
#34 11.45 Progress: resolved 300, reused 0, downloaded 300, added 300, done
#34 12.12
#34 12.12 devDependencies:
#34 12.12 + @typescript-eslint/eslint-plugin 8.54.0
#34 12.12 + @typescript-eslint/parser 8.54.0
#34 12.12 + eslint 9.39.2
#34 12.12 + eslint-config-prettier 10.1.8
#34 12.12 + eslint-plugin-prettier 5.5.5
#34 12.12 + prettier 3.8.1
#34 12.12 + turbo 2.8.0
#34 12.12 + typescript 5.9.3
#34 12.12 + vitest 3.2.4
#34 12.12
#34 12.12 ╭ Warning ─────────────────────────────────────────────────────────────────────╮
#34 12.12 │ │
#34 12.12 │ Ignored build scripts: esbuild, sharp. │
#34 12.12 │ Run "pnpm approve-builds" to pick which dependencies should be allowed │
#34 12.12 │ to run scripts. │
#34 12.12 │ │
#34 12.12 ╰──────────────────────────────────────────────────────────────────────────────╯
#34 12.12
#34 12.33 Done in 11.7s using pnpm v10.19.0
#34 ...
#54 [api production 12/17] RUN pnpm install --prod --frozen-lockfile
#54 7.105 Progress: resolved 449, reused 0, downloaded 177, added 166
#54 8.124 Progress: resolved 449, reused 0, downloaded 229, added 228
#54 9.135 Progress: resolved 449, reused 0, downloaded 282, added 279
#54 10.14 Progress: resolved 449, reused 0, downloaded 415, added 413
#54 11.14 Progress: resolved 449, reused 0, downloaded 447, added 447
#54 ...
#34 [web deps 5/5] RUN pnpm install --frozen-lockfile
#34 DONE 14.7s
#52 [web production 12/17] RUN pnpm install --prod --frozen-lockfile
#52 10.46 Progress: resolved 175, reused 0, downloaded 173, added 172
#52 11.46 Progress: resolved 175, reused 0, downloaded 174, added 174
#52 12.00 Progress: resolved 175, reused 0, downloaded 175, added 175, done
#52 12.37
#52 12.37 devDependencies: skipped
#52 12.37
#52 12.37 ╭ Warning ─────────────────────────────────────────────────────────────────────╮
#52 12.37 │ │
#52 12.37 │ Ignored build scripts: sharp. │
#52 12.37 │ Run "pnpm approve-builds" to pick which dependencies should be allowed │
#52 12.37 │ to run scripts. │
#52 12.37 │ │
#52 12.37 ╰──────────────────────────────────────────────────────────────────────────────╯
#52 12.37
#52 12.57 Done in 11.7s using pnpm v10.19.0
#52 DONE 13.5s
#53 [api deps 5/5] RUN pnpm install --frozen-lockfile
#53 11.04 Progress: resolved 690, reused 0, downloaded 608, added 607
#53 12.04 Progress: resolved 690, reused 0, downloaded 673, added 674
#53 13.04 Progress: resolved 690, reused 0, downloaded 684, added 685
#53 14.04 Progress: resolved 690, reused 0, downloaded 687, added 687
#53 14.74 Progress: resolved 690, reused 0, downloaded 689, added 690, done
#53 15.68
#53 15.68 devDependencies:
#53 15.68 + @typescript-eslint/eslint-plugin 8.54.0
#53 15.68 + @typescript-eslint/parser 8.54.0
#53 15.68 + eslint 9.39.2
#53 15.68 + eslint-config-prettier 10.1.8
#53 15.68 + eslint-plugin-prettier 5.5.5
#53 15.68 + prettier 3.8.1
#53 15.68 + turbo 2.8.0
#53 15.68 + typescript 5.9.3
#53 15.68 + vitest 3.2.4
#53 15.68
#53 15.68 ╭ Warning ─────────────────────────────────────────────────────────────────────╮
#53 15.68 │ │
#53 15.68 │ Ignored build scripts: @nestjs/core, @prisma/client, @prisma/engines, │
#53 15.68 │ @swc/core, better-sqlite3, esbuild, prisma, sharp. │
#53 15.68 │ Run "pnpm approve-builds" to pick which dependencies should be allowed │
#53 15.68 │ to run scripts. │
#53 15.68 │ │
#53 15.68 ╰──────────────────────────────────────────────────────────────────────────────╯
#53 15.68
#53 15.87 Done in 15.3s using pnpm v10.19.0
#53 DONE 17.0s
#54 [api production 12/17] RUN pnpm install --prod --frozen-lockfile
#54 12.41 Progress: resolved 449, reused 0, downloaded 448, added 447
#54 13.41 Progress: resolved 449, reused 0, downloaded 449, added 448
#54 13.68 Progress: resolved 449, reused 0, downloaded 449, added 449, done
#54 14.23
#54 14.23 devDependencies: skipped
#54 14.23
#54 14.23 ╭ Warning ─────────────────────────────────────────────────────────────────────╮
#54 14.23 │ │
#54 14.23 │ Ignored build scripts: @nestjs/core, @prisma/client, @prisma/engines, │
#54 14.23 │ better-sqlite3, esbuild, prisma, sharp. │
#54 14.23 │ Run "pnpm approve-builds" to pick which dependencies should be allowed │
#54 14.23 │ to run scripts. │
#54 14.23 │ │
#54 14.23 ╰──────────────────────────────────────────────────────────────────────────────╯
#54 14.23
#54 14.34 Done in 13.5s using pnpm v10.19.0
#54 DONE 14.6s
#55 [web builder 1/7] COPY --from=deps /app/node_modules ./node_modules
#55 DONE 4.6s
#56 [web builder 2/7] COPY --from=deps /app/packages ./packages
#56 DONE 0.2s
#57 [web builder 3/7] COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules
#57 DONE 0.3s
#58 [web builder 4/7] COPY packages ./packages
#58 DONE 0.3s
#59 [api builder 1/8] COPY --from=deps /app/node_modules ./node_modules
#59 ...
#60 [web builder 5/7] COPY apps/web ./apps/web
#60 DONE 0.3s
#61 [web builder 6/7] WORKDIR /app/apps/web
#61 DONE 0.2s
#59 [api builder 1/8] COPY --from=deps /app/node_modules ./node_modules
#59 ...
#62 [web builder 7/7] RUN pnpm build
#62 1.159
#62 1.159 > @mosaic/web@0.0.1 build /app/apps/web
#62 1.159 > next build
#62 1.159
#62 2.586 Attention: Next.js now collects completely anonymous telemetry regarding usage.
#62 2.587 This information is used to shape Next.js' roadmap and prioritize features.
#62 2.587 You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
#62 2.587 https://nextjs.org/telemetry
#62 2.587
#62 2.612 ▲ Next.js 16.1.6 (Turbopack)
#62 2.616
#62 2.798 Creating an optimized production build ...
#62 6.248 ✓ Compiled successfully in 2.6s
#62 6.303 Running TypeScript ...
#62 ...
#59 [api builder 1/8] COPY --from=deps /app/node_modules ./node_modules
#59 DONE 7.5s
#63 [api builder 2/8] COPY --from=deps /app/packages ./packages
#63 DONE 0.2s
#62 [web builder 7/7] RUN pnpm build
#62 ...
#64 [api builder 3/8] COPY --from=deps /app/apps/api/node_modules ./apps/api/node_modules
#64 DONE 0.3s
#62 [web builder 7/7] RUN pnpm build
#62 ...
#65 [api builder 4/8] COPY packages ./packages
#65 DONE 0.3s
#62 [web builder 7/7] RUN pnpm build
#62 ...
#66 [api builder 5/8] COPY apps/api ./apps/api
#66 DONE 0.3s
#62 [web builder 7/7] RUN pnpm build
#62 ...
#67 [api builder 6/8] WORKDIR /app/apps/api
#67 DONE 0.2s
#62 [web builder 7/7] RUN pnpm build
#62 ...
#68 [api builder 7/8] RUN pnpm prisma:generate
#68 1.222
#68 1.222 > @mosaic/api@0.0.1 prisma:generate /app/apps/api
#68 1.222 > prisma generate
#68 1.222
#68 2.660 warn The configuration property
package.json#prismais deprecated and will be removed in Prisma 7. Please migrate to a Prisma config file (e.g.,prisma.config.ts).#68 2.660 For more information, see: https://pris.ly/prisma-config
#68 2.660
#68 3.714 Environment variables loaded from .env
#68 3.716 Prisma schema loaded from prisma/schema.prisma
#68 4.590
#68 4.590 ✔ Generated Prisma Client (v6.19.2) to ./../../node_modules/.pnpm/@prisma+client@6.19.2_prisma@6.19.2_typescript@5.9.3__typescript@5.9.3/node_modules/@prisma/client in 361ms
#68 4.590
#68 4.590 Start by importing your Prisma Client (See: https://pris.ly/d/importing-client)
#68 4.590
#68 4.590 Tip: Need your database queries to be 1000x faster? Accelerate offers you that and more: https://pris.ly/tip-2-accelerate
#68 4.590
#68 DONE 4.8s
#62 [web builder 7/7] RUN pnpm build
#62 ...
#69 [api builder 8/8] RUN pnpm build
#69 ...
#62 [web builder 7/7] RUN pnpm build
#62 13.85 Failed to compile.
#62 13.85
#62 13.85 ./src/components/tasks/TaskItem.tsx:23:22
#62 13.85 Type error: Element implicitly has an 'any' type because expression of type 'TaskStatus' can't be used to index type '{ readonly active: "🟢"; readonly upcoming: "🔵"; readonly paused: "⏸️"; readonly dormant: "💤"; readonly completed: "✅"; }'.
#62 13.85 Property '[TaskStatus.NOT_STARTED]' does not exist on type '{ readonly active: "🟢"; readonly upcoming: "🔵"; readonly paused: "⏸️"; readonly dormant: "💤"; readonly completed: "✅"; }'.
#62 13.85
#62 13.85 [0m [90m 21 |[39m
#62 13.85 [90m 22 |[39m [36mexport[39m [36mfunction[39m [33mTaskItem[39m({ task }[33m:[39m [33mTaskItemProps[39m) {
#62 13.85 [31m[1m>[22m[39m[90m 23 |[39m [36mconst[39m statusIcon [33m=[39m statusIcons[task[33m.[39mstatus] [33m||[39m [32m"⚪"[39m[33m;[39m
#62 13.85 [90m |[39m [31m[1m^[22m[39m
#62 13.85 [90m 24 |[39m [36mconst[39m priorityLabel [33m=[39m priorityLabels[task[33m.[39mpriority][33m;[39m
#62 13.85 [90m 25 |[39m
#62 13.85 [90m 26 |[39m [90m// PDA-friendly date status[39m[0m
#62 13.90 Next.js build worker exited with code: 1 and signal: null
#62 13.96 ELIFECYCLE Command failed with exit code 1.
#62 ERROR: process "/bin/sh -c pnpm build" did not complete successfully: exit code: 1
#69 [api builder 8/8] RUN pnpm build
#69 1.251
#69 1.251 > @mosaic/api@0.0.1 build /app/apps/api
#69 1.251 > nest build
#69 1.251
#69 CANCELED
References