docs(decisions): add ADR-0030 dockerised full-stack dev mode (proposed) #256
Reference in New Issue
Block a user
Delete Branch "docs/adr-0030-dockerised-dev-mode"
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?
Summary
Propose ADR-0030 — Dockerised full-stack dev mode: an
appsCompose profile that runs the three Nx apps (portal-bff,portal-shell,portal-admin) from a sharedDockerfile.dev, so a developer candocker compose upthe whole stack with no native Node/pnpm on the host.proposedstatus — this PR is the decision record only. TheDockerfile.dev+ theappsprofile + the BFF entrypoint land in a follow-up PR once the ADR is accepted.Why
Two frictions motivate it:
infra/local/dev.compose.yml), but the Nx apps run natively — every dev pays the nvm/corepack/pnpm setup cost. The recent fresh-VM.zshrcnvm gap is a concrete example of that path breaking.docker compose up, no toolchain, no IDE attach.Decision (chosen option)
An
appsCompose profile backed by one sharedDockerfile.dev(node:24 + pinned pnpm), because it is purely additive:./infra/local/dev.sh upstays infra-only (native + devcontainer flows unchanged)../infra/local/dev.sh up appsbrings up infra + the three dev servers with hot reload.Key design points captured in the ADR (built in the follow-up): one image / one install for the monorepo; repo bind-mounted but
node_modules+ Nx cache in named volumes (native-module arch correctness);depends_on … service_healthy; BFF entrypoint doesprisma generate+migrate deploy; services point at the existingapf-portal-devCompose network.The ADR documents a "which mode when" table so the three dev modes (native / devcontainer / compose-
apps) coexist without confusion.Scope guardrails
Numbering
Takes 0030, not 0029.
0029is reserved for the cascade/Pléiades/Acteurs+ syncs ADR (referenced by ADR-0026/0027/0028); numbers are never reused, so the dev-mode ADR takes the next free slot. The index gap at 0029 is intentional until that ADR is written.What lands
docs/decisions/0030-dockerised-dev-mode.mdproposed.docs/decisions/README.mdTest plan
infrastructure,process).docs/setup/, then open the implementation PR.Related