feat(infra): dockerised full-stack dev mode — apps compose profile (ADR-0030)
CI / scan (pull_request) Successful in 3m46s
CI / commits (pull_request) Successful in 3m46s
CI / check (pull_request) Successful in 4m4s
CI / a11y (pull_request) Successful in 4m25s
Docs site / build (pull_request) Successful in 4m37s
CI / perf (pull_request) Successful in 8m43s
CI / scan (pull_request) Successful in 3m46s
CI / commits (pull_request) Successful in 3m46s
CI / check (pull_request) Successful in 4m4s
CI / a11y (pull_request) Successful in 4m25s
Docs site / build (pull_request) Successful in 4m37s
CI / perf (pull_request) Successful in 8m43s
Add an 'apps' Compose profile that runs the three Nx dev servers (portal-bff, portal-shell, portal-admin) from a shared Dockerfile.dev, so the whole stack boots with 'dev.sh up apps' and no native Node/pnpm. - Dockerfile.dev: node:24-bookworm + corepack (pnpm from packageManager at runtime), NX_DAEMON=false. No build-time COPY/install. - dev-entrypoint.sh: BFF runs prisma generate + migrate deploy then serves; SPA services go straight to nx serve. - dev.compose.yml: one-shot apps-deps installs into a shared node_modules volume once (apps gate on its completion, no install race); repo bind-mounted, node_modules + .nx in named volumes; BFF reuses its own .env (required:false) with host URLs overridden to Compose service names. - dev.sh: apps added to ALL_PROFILES + usage. - Docs: which-mode-when table (setup doc), apps section (infra README), CLAUDE.md roll-up. ADR-0030 flipped to accepted. Dev-only; production images stay with the ADR-0028 Container Registry work. Additive + profile-gated — native and devcontainer flows unchanged. Full-boot validation pending on a Docker host (see PR body).
This commit is contained in:
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
# Shared entrypoint for the ADR-0030 `apps` Compose profile services.
|
||||
#
|
||||
# Behaviour is driven by env + the passed command:
|
||||
# - The `apps-deps` one-shot service runs `pnpm install` as its
|
||||
# command; this entrypoint just execs it (APF_ROLE unset → no
|
||||
# prisma). It populates the shared node_modules volume once, so
|
||||
# the app services don't race three concurrent installs.
|
||||
# - The BFF service sets APF_ROLE=bff → this entrypoint runs
|
||||
# `prisma generate` + `prisma migrate deploy` (client + committed
|
||||
# migrations) before serving. `migrate deploy`, never `migrate
|
||||
# dev` — a container never authors migrations.
|
||||
# - The SPA services (portal-shell / portal-admin) leave APF_ROLE
|
||||
# unset → straight to `exec "$@"` (nx serve).
|
||||
set -euo pipefail
|
||||
cd /workspace
|
||||
|
||||
if [[ "${APF_ROLE:-}" == "bff" ]]; then
|
||||
echo "[dev-entrypoint] BFF: prisma generate"
|
||||
pnpm exec prisma generate
|
||||
echo "[dev-entrypoint] BFF: prisma migrate deploy"
|
||||
pnpm exec prisma migrate deploy
|
||||
fi
|
||||
|
||||
echo "[dev-entrypoint] exec: $*"
|
||||
exec "$@"
|
||||
Reference in New Issue
Block a user