Traefik integration for Docker Compose (bundled or upstream) #36

Closed
opened 2026-01-28 23:57:12 +00:00 by jason.woltje · 0 comments
Owner

Objective

Add Traefik reverse proxy support to the Docker Compose setup with two deployment modes:

  1. Bundled Mode (Turnkey) - Include Traefik in docker-compose.yml for all-in-one deployment
  2. Upstream Mode - Register services with existing Traefik instance on the host

Requirements

Bundled Mode

  • Include Traefik service in docker-compose.yml
  • Configure automatic SSL with Let's Encrypt or self-signed certs
  • Expose HTTP (80) and HTTPS (443) ports
  • Include Traefik dashboard for monitoring
  • Auto-discovery of mosaic-api and mosaic-web services

Upstream Mode

  • Connect to external Traefik network (traefik-public)
  • Add appropriate labels to mosaic-api and mosaic-web services
  • Support custom domain configuration via environment variables
  • No bundled Traefik service when using upstream mode

Configuration

Environment variables to control behavior:

Implementation

  1. Update docker-compose.yml with Traefik service (profiles: [bundled])
  2. Add service labels for Traefik auto-discovery
  3. Create docker-compose.traefik.yml override for bundled mode
  4. Create docker-compose.upstream.yml override for upstream mode
  5. Update .env.example with Traefik variables
  6. Document both deployment modes in DOCKER.md

Acceptance Criteria

  • Bundled mode: #1 [internal] load local bake definitions
    #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#prisma is 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   21 |
#62 13.85  22 | export function TaskItem({ task }: TaskItemProps) {
#62 13.85 > 23 | const statusIcon = statusIcons[task.status] || "";
#62 13.85  | ^
#62 13.85  24 | const priorityLabel = priorityLabels[task.priority];
#62 13.85  25 |
#62 13.85  26 | // PDA-friendly date status
#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

[web builder 7/7] RUN pnpm build:
13.85
13.85   21 |
13.85  22 | export function TaskItem({ task }: TaskItemProps) {
13.85 > 23 | const statusIcon = statusIcons[task.status] || "";
13.85  | ^
13.85  24 | const priorityLabel = priorityLabels[task.priority];
13.85  25 |
13.85  26 | // PDA-friendly date status
13.90 Next.js build worker exited with code: 1 and signal: null
13.96  ELIFECYCLE  Command failed with exit code 1.
------ starts Traefik + all services

  • Upstream mode: Services register with existing Traefik instance
  • Services accessible via configured domains
  • HTTPS works in both modes
  • Traefik dashboard accessible in bundled mode
  • Documentation covers both deployment scenarios
  • Easy switching between modes via environment variable

References

  • Existing Traefik instance: ~/src/traefik (web1.corp.uscllc.local)
  • Traefik network: traefik-public
  • Domain pattern: *.uscllc.com (self-signed wildcard cert)
## Objective Add Traefik reverse proxy support to the Docker Compose setup with two deployment modes: 1. **Bundled Mode (Turnkey)** - Include Traefik in docker-compose.yml for all-in-one deployment 2. **Upstream Mode** - Register services with existing Traefik instance on the host ## Requirements ### Bundled Mode - Include Traefik service in docker-compose.yml - Configure automatic SSL with Let's Encrypt or self-signed certs - Expose HTTP (80) and HTTPS (443) ports - Include Traefik dashboard for monitoring - Auto-discovery of mosaic-api and mosaic-web services ### Upstream Mode - Connect to external Traefik network (traefik-public) - Add appropriate labels to mosaic-api and mosaic-web services - Support custom domain configuration via environment variables - No bundled Traefik service when using upstream mode ## Configuration Environment variables to control behavior: ## Implementation 1. Update docker-compose.yml with Traefik service (profiles: [bundled]) 2. Add service labels for Traefik auto-discovery 3. Create docker-compose.traefik.yml override for bundled mode 4. Create docker-compose.upstream.yml override for upstream mode 5. Update .env.example with Traefik variables 6. Document both deployment modes in DOCKER.md ## Acceptance Criteria - [ ] Bundled mode: #1 [internal] load local bake definitions #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#prisma` is 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   21 | #62 13.85  22 | export function TaskItem({ task }: TaskItemProps) { #62 13.85 > 23 | const statusIcon = statusIcons[task.status] || "⚪"; #62 13.85  | ^ #62 13.85  24 | const priorityLabel = priorityLabels[task.priority]; #62 13.85  25 | #62 13.85  26 | // PDA-friendly date status #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 ------ > [web builder 7/7] RUN pnpm build: 13.85 13.85   21 | 13.85  22 | export function TaskItem({ task }: TaskItemProps) { 13.85 > 23 | const statusIcon = statusIcons[task.status] || "⚪"; 13.85  | ^ 13.85  24 | const priorityLabel = priorityLabels[task.priority]; 13.85  25 | 13.85  26 | // PDA-friendly date status 13.90 Next.js build worker exited with code: 1 and signal: null 13.96  ELIFECYCLE  Command failed with exit code 1. ------ starts Traefik + all services - [ ] Upstream mode: Services register with existing Traefik instance - [ ] Services accessible via configured domains - [ ] HTTPS works in both modes - [ ] Traefik dashboard accessible in bundled mode - [ ] Documentation covers both deployment scenarios - [ ] Easy switching between modes via environment variable ## References - Existing Traefik instance: ~/src/traefik (web1.corp.uscllc.local) - Traefik network: traefik-public - Domain pattern: *.uscllc.com (self-signed wildcard cert)
jason.woltje added the devopsp1 labels 2026-01-28 23:57:12 +00:00
jason.woltje added this to the M1-Foundation (0.0.1) milestone 2026-01-28 23:58:13 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaic/stack#36