The scariest moment of a young CA's life is its first restart. goca's compose bundle makes it boring — if you use the right shape. There are three, with three costs:
- Host reboot or Docker engine restart: automatic, seconds. Every long-running service — the database included — carries
restart: unless-stopped, so the existing containers come straight back. Nothing to type. docker compose stop/start: ~25 s to fully green. Same containers, clean 15 s drain on the way down. This is the way to pause and resume a stack; services answer sooner than the health status flips.docker compose up -d(recreation): ~65 s. The only path that runs the full dependency chain — database healthcheck, migrations, role passwords, TLS init — and the only one you need after changing images or compose configuration.
What never to do: a blanket docker start across all containers, or a desktop-UI "start everything". That re-runs every one-shot container — including the demo seed, which will happily load its fixtures into your live database. If the goal is "the stack I had before", shape 2 is the whole answer.
Now I can restart the stack with the right shape — and I know the one command never to run.