feat: v9.8.1 pre-built Docker images and GHCR release workflow

Setup.py now asks whether to pull pre-built images from GHCR
(recommended) or build from source. Pre-built mode skips the
15-minute compile step entirely.

- Add .github/workflows/release.yml (builds+pushes 4 images on tag)
- Add docker-compose.build.yml (source-build overlay)
- Switch docker-compose.prod.yml from build: to image: refs
- Add --build-mode CLI arg and wizard step to setup.py
- Bump version to 9.8.1 across all files
- Document TOD_VERSION env var in CONFIGURATION.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jason Staack
2026-03-22 18:33:12 -05:00
parent 0c1ffe0e39
commit b1ac1cce24
11 changed files with 250 additions and 27 deletions

View File

@@ -1,5 +1,10 @@
# docker-compose.prod.yml -- Production environment override
# Usage: docker compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.prod up -d
#
# Pre-built images (recommended):
# docker compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.prod up -d
#
# Build from source:
# docker compose -f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.build.yml --env-file .env.prod up -d
services:
postgres:
@@ -13,9 +18,7 @@ services:
retries: 5
api:
build:
context: .
dockerfile: infrastructure/docker/Dockerfile.api
image: ghcr.io/staack/the-other-dude/api:${TOD_VERSION:-latest}
container_name: tod_api
env_file: .env.prod
environment:
@@ -67,9 +70,7 @@ services:
- tod_remote_worker
poller:
build:
context: ./poller
dockerfile: ./Dockerfile
image: ghcr.io/staack/the-other-dude/poller:${TOD_VERSION:-latest}
container_name: tod_poller
env_file: .env.prod
cap_add:
@@ -135,6 +136,7 @@ services:
max-file: "3"
winbox-worker:
image: ghcr.io/staack/the-other-dude/winbox-worker:${TOD_VERSION:-latest}
environment:
LOG_LEVEL: info
MAX_CONCURRENT_SESSIONS: 10
@@ -146,9 +148,7 @@ services:
restart: unless-stopped
frontend:
build:
context: .
dockerfile: infrastructure/docker/Dockerfile.frontend
image: ghcr.io/staack/the-other-dude/frontend:${TOD_VERSION:-latest}
container_name: tod_frontend
ports:
- "3000:80"