Bot hosting: releases are self-contained CI bundles, and the bot serves its own web UI
The image no longer installs the bot's dependencies: its CI builds one tar.gz holding the app plus a
vendor/ directory of prebuilt wheels, and PYTHONPATH=/app/vendor makes the code import them. A new
dependency therefore needs no image rebuild and the server contacts no package index.
- deployBotBundle.sh: install / --latest / --status / --rollback, verifies every file against BUILD.json
and keeps the previous release beside the live one.
- compose: mount ${BOT_APP_DIR:-/srv/bot/app} at /app, set DB_BACKEND, DATA_DIR, WEB_ALLOWED_GROUPS,
WEB_SERVE_UI and PYTHONPATH. bot/app placeholder untracked; install.sh creates /srv/bot/app.
- The placeholder requirements would have crashed the bot on import (no sqlglot), which is why the
image now ships none of them.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -214,6 +214,11 @@ services:
|
||||
DB_NAME: ${BOT_DB_NAME:-vanguardbot}
|
||||
DB_USER: ${BOT_DB_USER:-bot}
|
||||
DB_PASSWORD: ${BOT_DB_PASSWORD}
|
||||
DB_BACKEND: mariadb
|
||||
DATA_DIR: /data
|
||||
WEB_ALLOWED_GROUPS: ${BOT_WEB_ALLOWED_GROUPS:-bot-users,admins} # the bot's own gate; Caddy already requires BOT_REQUIRE_GROUP
|
||||
WEB_SERVE_UI: "true" # serve the bot's own pages at / on this port (same origin as /api)
|
||||
PYTHONPATH: /app/vendor # the bundle's dependencies; the image installs none
|
||||
MEDIA_CLIPS: /media/clips
|
||||
WEB_HOST: 0.0.0.0
|
||||
WEB_PORT: "8000"
|
||||
@@ -226,7 +231,7 @@ services:
|
||||
ports:
|
||||
- "127.0.0.1:8000:8000" # web UI; public only via Caddy + Authentik forward-auth at https://BOT_HOST/
|
||||
volumes:
|
||||
- ./bot/app:/app # the bot's source; edit and `docker compose restart discord-bot`
|
||||
- ${BOT_APP_DIR:-/srv/bot/app}:/app # CI bundle installed by ./deployBotBundle.sh (code + vendor/)
|
||||
- /srv/media/clips:/media/clips # rw: for a clip-submissions feature (writes into clips/<user>/)
|
||||
- /srv/appdata/discord-bot:/data # persistent scratch (sqlite, caches) if the bot wants files
|
||||
extra_hosts:
|
||||
|
||||
Reference in New Issue
Block a user