Move backup execution out of the management command into a reusable backup runner service that can execute an existing BackupRun record. Add queue primitives and a run_pobsync_worker command so manual backup requests can be recorded as queued SQL state and processed outside the web request path. Add a worker Docker service and pobsync worker CLI alias, with tests for queued run creation, worker execution, manual run typing, and command mapping.
131 lines
3.9 KiB
YAML
131 lines
3.9 KiB
YAML
services:
|
|
web:
|
|
build: .
|
|
command: python manage.py runserver 0.0.0.0:8000
|
|
environment:
|
|
POBSYNC_DJANGO_DEBUG: "1"
|
|
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
POBSYNC_SQLITE_PATH: "/var/lib/pobsync/pobsync.sqlite3"
|
|
ports:
|
|
- "8010:8000"
|
|
volumes:
|
|
- pobsync_state:/opt/pobsync
|
|
- pobsync_db:/var/lib/pobsync
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
|
|
|
scheduler:
|
|
build: .
|
|
command: python manage.py run_pobsync_scheduler --loop --interval 60
|
|
environment:
|
|
POBSYNC_DJANGO_DEBUG: "1"
|
|
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
POBSYNC_SQLITE_PATH: "/var/lib/pobsync/pobsync.sqlite3"
|
|
volumes:
|
|
- pobsync_state:/opt/pobsync
|
|
- pobsync_db:/var/lib/pobsync
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
|
|
|
worker:
|
|
build: .
|
|
command: python manage.py run_pobsync_worker --loop --interval 15
|
|
environment:
|
|
POBSYNC_DJANGO_DEBUG: "1"
|
|
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
POBSYNC_SQLITE_PATH: "/var/lib/pobsync/pobsync.sqlite3"
|
|
volumes:
|
|
- pobsync_state:/opt/pobsync
|
|
- pobsync_db:/var/lib/pobsync
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
|
|
|
web-mariadb:
|
|
profiles: ["mariadb"]
|
|
build: .
|
|
command: python manage.py runserver 0.0.0.0:8000
|
|
environment:
|
|
POBSYNC_DJANGO_DEBUG: "1"
|
|
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
POBSYNC_DB_ENGINE: "mariadb"
|
|
POBSYNC_DB_HOST: "db"
|
|
POBSYNC_DB_NAME: "pobsync"
|
|
POBSYNC_DB_USER: "pobsync"
|
|
POBSYNC_DB_PASSWORD: "pobsync"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8010:8000"
|
|
volumes:
|
|
- pobsync_state:/opt/pobsync
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
|
|
|
scheduler-mariadb:
|
|
profiles: ["mariadb"]
|
|
build: .
|
|
command: python manage.py run_pobsync_scheduler --loop --interval 60
|
|
environment:
|
|
POBSYNC_DJANGO_DEBUG: "1"
|
|
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
POBSYNC_DB_ENGINE: "mariadb"
|
|
POBSYNC_DB_HOST: "db"
|
|
POBSYNC_DB_NAME: "pobsync"
|
|
POBSYNC_DB_USER: "pobsync"
|
|
POBSYNC_DB_PASSWORD: "pobsync"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
volumes:
|
|
- pobsync_state:/opt/pobsync
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
|
|
|
worker-mariadb:
|
|
profiles: ["mariadb"]
|
|
build: .
|
|
command: python manage.py run_pobsync_worker --loop --interval 15
|
|
environment:
|
|
POBSYNC_DJANGO_DEBUG: "1"
|
|
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
POBSYNC_DB_ENGINE: "mariadb"
|
|
POBSYNC_DB_HOST: "db"
|
|
POBSYNC_DB_NAME: "pobsync"
|
|
POBSYNC_DB_USER: "pobsync"
|
|
POBSYNC_DB_PASSWORD: "pobsync"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
volumes:
|
|
- pobsync_state:/opt/pobsync
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
|
|
|
db:
|
|
profiles: ["mariadb"]
|
|
image: mariadb:11
|
|
environment:
|
|
MARIADB_DATABASE: "pobsync"
|
|
MARIADB_USER: "pobsync"
|
|
MARIADB_PASSWORD: "pobsync"
|
|
MARIADB_ROOT_PASSWORD: "pobsync-root"
|
|
volumes:
|
|
- mariadb_data:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
volumes:
|
|
pobsync_state:
|
|
pobsync_db:
|
|
mariadb_data:
|