Das web-Runtime-Image (caddy:2-alpine) hatte keine eigene Config, daher
lieferte Caddy seine Default-Welcome-Seite aus /usr/share/caddy statt der
gebauten SPA aus /srv ("Caddy works!"). Eigene Caddyfile (root /srv,
try_files SPA-Fallback) wird jetzt nach /etc/caddy/Caddyfile kopiert.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
805 B
Docker
27 lines
805 B
Docker
# --- builder ---
|
|
FROM node:22-alpine AS builder
|
|
WORKDIR /repo
|
|
|
|
RUN corepack enable && corepack prepare pnpm@10.28.0 --activate
|
|
|
|
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml tsconfig.base.json ./
|
|
COPY apps/web/package.json ./apps/web/
|
|
COPY apps/api/package.json ./apps/api/
|
|
COPY packages/db/package.json ./packages/db/
|
|
COPY packages/shared/package.json ./packages/shared/
|
|
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
COPY apps/web ./apps/web
|
|
COPY apps/api ./apps/api
|
|
COPY packages/db ./packages/db
|
|
COPY packages/shared ./packages/shared
|
|
|
|
RUN pnpm --filter web build
|
|
|
|
# --- runtime (static via Caddy) ---
|
|
FROM caddy:2-alpine AS runtime
|
|
# Eigene Caddy-Config statt der Default-Welcome-Seite: SPA aus /srv ausliefern.
|
|
COPY apps/web/Caddyfile /etc/caddy/Caddyfile
|
|
COPY --from=builder /repo/apps/web/dist /srv
|