mirror of
https://github.com/docker/compose.git
synced 2026-08-04 06:38:45 +00:00
|
Some checks failed
ci / validate (lint) (push) Has been cancelled
ci / validate (validate-docs) (push) Has been cancelled
ci / validate (validate-go-mod) (push) Has been cancelled
ci / validate (validate-headers) (push) Has been cancelled
ci / binary (push) Has been cancelled
ci / bin-image-test (push) Has been cancelled
ci / test (push) Has been cancelled
ci / e2e (plugin, oldstable) (push) Has been cancelled
ci / e2e (standalone, oldstable) (push) Has been cancelled
ci / e2e (plugin, stable) (push) Has been cancelled
ci / e2e (standalone, stable) (push) Has been cancelled
merge / bin-image-prepare (push) Has been cancelled
merge / module-image (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
ci / binary-finalize (push) Has been cancelled
ci / coverage (push) Has been cancelled
ci / release (push) Has been cancelled
merge / bin-image (push) Has been cancelled
merge / desktop-edge-test (push) Has been cancelled
runPreStart executes a service's pre_start hooks sequentially as ephemeral containers that share the first non-running replica's volumes via VolumesFrom and attach to the same networks. A non-zero hook exit gates service start. per_replica: false is the only currently supported mode; per_replica: true is rejected up front. The donor replica is the lowest-numbered one so the choice is deterministic. ContainerWait uses WaitConditionNextExit, and the wait loop deterministically handles the daemon's clean-close (nil on Error + exit code on Result) and transport-error races to avoid spurious hook failures. The log stream is opened before ContainerStart to avoid racing AutoRemove on fast-exiting hooks, and runs under a derived context so a daemon that keeps the connection open cannot deadlock the call. Hook containers carry project/service/version labels; the two cleanup paths force-remove the never-started container explicitly and warn when removal fails. pre_start runs once per service when no replica is already running (initial up, force-recreate or spec change), and is skipped on scale-up so additional replicas don't re-trigger the hooks. Coverage: 11 unit tests (including scheduler-race stress) with goroutine-leak verification via goleak, plus 10 E2E tests (success path, hook failure gating start, build-image inheritance, idempotent re-up, spec change, force-recreate, mid-sequence failure, ordering, scale-up, scaled service). Signed-off-by: Guillaume Lours <glours@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| attach-restart | ||
| bridge | ||
| build-dependencies | ||
| build-infinite | ||
| build-test | ||
| cascade | ||
| commit | ||
| compose-pull | ||
| config | ||
| configs | ||
| container_name | ||
| cp-test | ||
| dependencies | ||
| dotenv | ||
| env-secret | ||
| env_file | ||
| environment | ||
| exec | ||
| export | ||
| external | ||
| hooks | ||
| image-volume-recreate | ||
| init-container | ||
| ipam | ||
| ipc-test | ||
| links | ||
| logging-driver | ||
| logs-test | ||
| model | ||
| nested | ||
| network-alias | ||
| network-interface-name | ||
| network-links | ||
| network-recreate | ||
| network-test | ||
| no-deps | ||
| orphans | ||
| pause | ||
| port-range | ||
| pre_start | ||
| profiles | ||
| project-volume-bind-test | ||
| providers | ||
| ps-test | ||
| publish | ||
| recreate-volumes | ||
| resources | ||
| restart-test | ||
| run-test | ||
| scale | ||
| sentences | ||
| simple-build-test | ||
| simple-composefile | ||
| start-fail | ||
| start-stop | ||
| start_interval | ||
| stdout-stderr | ||
| stop | ||
| switch-volumes | ||
| ups-deps-stop | ||
| volume-test | ||
| volumes | ||
| wait | ||
| watch | ||
| wrong-composefile | ||