diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-18 10:35:11 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-18 10:35:11 +0200 |
| commit | 1e5b4927e5ae1d542d51158eb995d4f4b5a8b1c5 (patch) | |
| tree | 5d2b414abbe6550eaf403c6aa4b5f75eb703fa01 /docs | |
| parent | 7a0771215d9bd52dc9d6913abee56a9f62893d3e (diff) | |
| download | bokf-1e5b4927e5ae1d542d51158eb995d4f4b5a8b1c5.tar.gz bokf-1e5b4927e5ae1d542d51158eb995d4f4b5a8b1c5.zip | |
deploy: --dev hot-reloads the daemon via docker cp + SIGHUPv0.1.14
- bokfd re-execs its own binary on SIGHUP, closing listeners/db first
- scripts/deploy.sh --dev cross-builds and copies binaries into the
running container, then verifies the reported version
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/DEPLOY.md | 17 | ||||
| -rw-r--r-- | docs/PROTOCOL.md | 5 | ||||
| -rw-r--r-- | docs/STATE.md | 4 |
3 files changed, 24 insertions, 2 deletions
diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md index 8862fab..2964a19 100644 --- a/docs/DEPLOY.md +++ b/docs/DEPLOY.md @@ -50,6 +50,23 @@ to touch an already initialized database. Subsequent `scripts/deploy.sh` runs update the image, tag and compose file, restart the daemon and wait for the healthcheck. +## Fast iteration (`--dev`) + +Normal deploys build an image and recreate the container. While developing, +`scripts/deploy.sh --dev` skips the image entirely: + +- the gate (`make` + `make test`) still runs locally, +- on an architecture mismatch the binaries are cross-compiled here + (`deploy/Dockerfile.cross`, ~20 s on a PC), +- the binaries are copied into the running container with `docker cp`, +- the daemon is reloaded with `SIGHUP`, which re-execs the binary in place + (in-memory sessions are lost, clients reconnect), +- the version the daemon reports is verified against the tag. + +No image is built and the container is not recreated; a later normal deploy +replaces the copied binaries. Use a descriptive tag, e.g. +`scripts/deploy.sh --dev v0.2.0-rc1`. + ## Deploying upgrades ```sh diff --git a/docs/PROTOCOL.md b/docs/PROTOCOL.md index f282691..1baf607 100644 --- a/docs/PROTOCOL.md +++ b/docs/PROTOCOL.md @@ -488,4 +488,7 @@ beyond the session and calls nothing but public commands. | `allow_org_create` | `true` | any user may create an org | Container deployments mount the socket directory, database directory, backup -and export directories as volumes; the daemon is otherwise stateless. +and export directories as volumes; the daemon is otherwise stateless. On +`SIGHUP` the daemon closes its listeners and database and re-executes its own +binary in place (used by `scripts/deploy.sh --dev`); in-memory sessions are +reset and clients reconnect. diff --git a/docs/STATE.md b/docs/STATE.md index 3cbe448..458833e 100644 --- a/docs/STATE.md +++ b/docs/STATE.md @@ -65,7 +65,9 @@ server/protocol/ledger only. come from a lego sidecar using INWX DNS-01 (`compose.yaml`). Externals get accounts/roles/tokens, never VPN access. `scripts/deploy.sh` builds locally and ships over SSH, or builds on the host when architectures - differ. + differ. `scripts/deploy.sh --dev` cross-compiles the binaries here and + hot-reloads the daemon (SIGHUP re-exec via `docker cp`), skipping the + image build and container recreate. ## Pending decisions |
