2026-05-19 04:48:13 +02:00
|
|
|
services:
|
|
|
|
|
web:
|
|
|
|
|
build: .
|
2026-05-19 15:33:09 +02:00
|
|
|
command: gunicorn pobsync_server.wsgi:application --bind 0.0.0.0:8000 --workers ${POBSYNC_GUNICORN_WORKERS:-2} --timeout ${POBSYNC_GUNICORN_TIMEOUT:-120}
|
|
|
|
|
restart: unless-stopped
|
2026-05-19 04:48:13 +02:00
|
|
|
environment:
|
2026-05-19 15:33:09 +02:00
|
|
|
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
|
|
|
|
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
2026-05-19 13:33:57 +02:00
|
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
2026-05-19 04:48:13 +02:00
|
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
|
|
|
POBSYNC_SQLITE_PATH: "/var/lib/pobsync/pobsync.sqlite3"
|
|
|
|
|
ports:
|
2026-05-19 15:33:09 +02:00
|
|
|
- "${POBSYNC_WEB_BIND:-0.0.0.0}:8010:8000"
|
2026-05-19 04:48:13 +02:00
|
|
|
volumes:
|
|
|
|
|
- pobsync_state:/opt/pobsync
|
|
|
|
|
- pobsync_db:/var/lib/pobsync
|
2026-05-19 12:48:32 +02:00
|
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
2026-05-19 15:33:09 +02:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "python", "manage.py", "check"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
2026-05-19 04:48:13 +02:00
|
|
|
|
2026-05-19 04:53:47 +02:00
|
|
|
scheduler:
|
|
|
|
|
build: .
|
|
|
|
|
command: python manage.py run_pobsync_scheduler --loop --interval 60
|
2026-05-19 15:33:09 +02:00
|
|
|
restart: unless-stopped
|
2026-05-19 04:53:47 +02:00
|
|
|
environment:
|
2026-05-19 15:33:09 +02:00
|
|
|
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
|
|
|
|
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
2026-05-19 13:33:57 +02:00
|
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
2026-05-19 04:53:47 +02:00
|
|
|
POBSYNC_HOME: "/opt/pobsync"
|
|
|
|
|
POBSYNC_SQLITE_PATH: "/var/lib/pobsync/pobsync.sqlite3"
|
|
|
|
|
volumes:
|
|
|
|
|
- pobsync_state:/opt/pobsync
|
|
|
|
|
- pobsync_db:/var/lib/pobsync
|
2026-05-19 12:48:32 +02:00
|
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
2026-05-19 15:33:09 +02:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "python", "manage.py", "check"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
2026-05-19 04:53:47 +02:00
|
|
|
|
2026-05-19 13:00:12 +02:00
|
|
|
worker:
|
|
|
|
|
build: .
|
|
|
|
|
command: python manage.py run_pobsync_worker --loop --interval 15
|
2026-05-19 15:33:09 +02:00
|
|
|
restart: unless-stopped
|
2026-05-19 13:00:12 +02:00
|
|
|
environment:
|
2026-05-19 15:33:09 +02:00
|
|
|
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
|
|
|
|
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
2026-05-19 13:33:57 +02:00
|
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
2026-05-19 13:00:12 +02:00
|
|
|
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
|
2026-05-19 15:33:09 +02:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "python", "manage.py", "check"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
2026-05-19 13:00:12 +02:00
|
|
|
|
2026-05-19 04:48:13 +02:00
|
|
|
web-mariadb:
|
|
|
|
|
profiles: ["mariadb"]
|
|
|
|
|
build: .
|
2026-05-19 15:33:09 +02:00
|
|
|
command: gunicorn pobsync_server.wsgi:application --bind 0.0.0.0:8000 --workers ${POBSYNC_GUNICORN_WORKERS:-2} --timeout ${POBSYNC_GUNICORN_TIMEOUT:-120}
|
|
|
|
|
restart: unless-stopped
|
2026-05-19 04:48:13 +02:00
|
|
|
environment:
|
2026-05-19 15:33:09 +02:00
|
|
|
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
|
|
|
|
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
2026-05-19 13:33:57 +02:00
|
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
2026-05-19 04:48:13 +02:00
|
|
|
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:
|
2026-05-19 15:33:09 +02:00
|
|
|
- "${POBSYNC_WEB_BIND:-0.0.0.0}:8010:8000"
|
2026-05-19 04:48:13 +02:00
|
|
|
volumes:
|
|
|
|
|
- pobsync_state:/opt/pobsync
|
2026-05-19 12:48:32 +02:00
|
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
2026-05-19 15:33:09 +02:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "python", "manage.py", "check"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
2026-05-19 04:48:13 +02:00
|
|
|
|
2026-05-19 04:53:47 +02:00
|
|
|
scheduler-mariadb:
|
|
|
|
|
profiles: ["mariadb"]
|
|
|
|
|
build: .
|
|
|
|
|
command: python manage.py run_pobsync_scheduler --loop --interval 60
|
2026-05-19 15:33:09 +02:00
|
|
|
restart: unless-stopped
|
2026-05-19 04:53:47 +02:00
|
|
|
environment:
|
2026-05-19 15:33:09 +02:00
|
|
|
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
|
|
|
|
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
2026-05-19 13:33:57 +02:00
|
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
2026-05-19 04:53:47 +02:00
|
|
|
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
|
2026-05-19 12:48:32 +02:00
|
|
|
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
2026-05-19 15:33:09 +02:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "python", "manage.py", "check"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
2026-05-19 04:53:47 +02:00
|
|
|
|
2026-05-19 13:00:12 +02:00
|
|
|
worker-mariadb:
|
|
|
|
|
profiles: ["mariadb"]
|
|
|
|
|
build: .
|
|
|
|
|
command: python manage.py run_pobsync_worker --loop --interval 15
|
2026-05-19 15:33:09 +02:00
|
|
|
restart: unless-stopped
|
2026-05-19 13:00:12 +02:00
|
|
|
environment:
|
2026-05-19 15:33:09 +02:00
|
|
|
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
|
|
|
|
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
2026-05-19 13:33:57 +02:00
|
|
|
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
2026-05-19 13:00:12 +02:00
|
|
|
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
|
2026-05-19 15:33:09 +02:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "python", "manage.py", "check"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
2026-05-19 13:00:12 +02:00
|
|
|
|
2026-05-19 04:48:13 +02:00
|
|
|
db:
|
|
|
|
|
profiles: ["mariadb"]
|
|
|
|
|
image: mariadb:11
|
2026-05-19 15:33:09 +02:00
|
|
|
restart: unless-stopped
|
2026-05-19 04:48:13 +02:00
|
|
|
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:
|