feat(delivery): phase 12 — the container, and the defect only a proxy could find #17

Merged
whitlocktech merged 2 commits from feat/phase-12-delivery into main 2026-08-27 03:53:56 +00:00
2 changed files with 9 additions and 1 deletions
Showing only changes of commit 1558111050 - Show all commits

View File

@@ -114,6 +114,10 @@ jobs:
runs-on: rgcom runs-on: rgcom
# Guard against a workflow_dispatch fired from a branch: only main is deployed. # Guard against a workflow_dispatch fired from a branch: only main is deployed.
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
# Until a runner with this label exists, this job simply QUEUES. That is the
# intended behaviour and it breaks nothing: `build` has already published the
# image, so `docker compose pull && up -d` by hand is available the whole time,
# and the queued job runs the moment the runner registers.
steps: steps:
- name: Pull the fresh image and recreate the container - name: Pull the fresh image and recreate the container

View File

@@ -39,7 +39,7 @@ Very little, and that is deliberate (`PLAN.md` §6).
|---|---| |---|---|
| **Runtime** | Docker, with Compose v2 (`docker compose`, not `docker-compose`) | | **Runtime** | Docker, with Compose v2 (`docker compose`, not `docker-compose`) |
| **CPU / RAM** | One core and 512 MB is comfortable. Every page but two is prerendered HTML | | **CPU / RAM** | One core and 512 MB is comfortable. Every page but two is prerendered HTML |
| **Disk** | ~600 MB for the image, plus a SQLite file that will not reach a megabyte | | **Disk** | ~750 MB for the image, plus a SQLite file that will not reach a megabyte |
| **Network out** | Only to pull the image. The running site makes no outbound request of any kind | | **Network out** | Only to pull the image. The running site makes no outbound request of any kind |
| **Network in** | One HTTP port, reached by your reverse proxy | | **Network in** | One HTTP port, reached by your reverse proxy |
| **Database** | None. No MariaDB, no Redis, no second service | | **Database** | None. No MariaDB, no Redis, no second service |
@@ -309,6 +309,10 @@ container. Without it the job starts in a container with no Docker socket and no
Make sure the user the runner runs as can talk to Docker (`docker ps` succeeds) and can read and Make sure the user the runner runs as can talk to Docker (`docker ps` succeeds) and can read and
write `/opt/runicgateway.com`. write `/opt/runicgateway.com`.
**Until that runner exists, the deploy job just queues**, and nothing is harmed: the image has
already been built and pushed by the time it would run, so the manual update below works throughout,
and the queued job goes as soon as the runner registers.
**To update by hand instead** — always available, and what you do if the runner is down: **To update by hand instead** — always available, and what you do if the runner is down:
```bash ```bash