(config) Harden Docker deployment for remote servers
Run the Django control panel with Gunicorn instead of the development runserver and serve static files through WhiteNoise. Add restart policies, healthchecks, .env-driven production settings, and a sample .env file for single-server deployments. Update the Docker entrypoint to collect static assets and document the remote server deployment and update flow in the README.
This commit is contained in:
@@ -1,26 +1,33 @@
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
command: python manage.py runserver 0.0.0.0:8000
|
||||
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
|
||||
environment:
|
||||
POBSYNC_DJANGO_DEBUG: "1"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
||||
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
||||
POBSYNC_DJANGO_ALLOWED_HOSTS: "${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"
|
||||
- "${POBSYNC_WEB_BIND:-0.0.0.0}:8010:8000"
|
||||
volumes:
|
||||
- pobsync_state:/opt/pobsync
|
||||
- pobsync_db:/var/lib/pobsync
|
||||
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "manage.py", "check"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
scheduler:
|
||||
build: .
|
||||
command: python manage.py run_pobsync_scheduler --loop --interval 60
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POBSYNC_DJANGO_DEBUG: "1"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
||||
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
||||
POBSYNC_DJANGO_ALLOWED_HOSTS: "${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"
|
||||
@@ -28,13 +35,19 @@ services:
|
||||
- pobsync_state:/opt/pobsync
|
||||
- pobsync_db:/var/lib/pobsync
|
||||
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "manage.py", "check"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
worker:
|
||||
build: .
|
||||
command: python manage.py run_pobsync_worker --loop --interval 15
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POBSYNC_DJANGO_DEBUG: "1"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
||||
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
||||
POBSYNC_DJANGO_ALLOWED_HOSTS: "${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"
|
||||
@@ -42,14 +55,20 @@ services:
|
||||
- pobsync_state:/opt/pobsync
|
||||
- pobsync_db:/var/lib/pobsync
|
||||
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "manage.py", "check"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
web-mariadb:
|
||||
profiles: ["mariadb"]
|
||||
build: .
|
||||
command: python manage.py runserver 0.0.0.0:8000
|
||||
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
|
||||
environment:
|
||||
POBSYNC_DJANGO_DEBUG: "1"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
||||
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
||||
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
||||
POBSYNC_HOME: "/opt/pobsync"
|
||||
POBSYNC_DB_ENGINE: "mariadb"
|
||||
@@ -61,18 +80,24 @@ services:
|
||||
db:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "8010:8000"
|
||||
- "${POBSYNC_WEB_BIND:-0.0.0.0}:8010:8000"
|
||||
volumes:
|
||||
- pobsync_state:/opt/pobsync
|
||||
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "manage.py", "check"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
scheduler-mariadb:
|
||||
profiles: ["mariadb"]
|
||||
build: .
|
||||
command: python manage.py run_pobsync_scheduler --loop --interval 60
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POBSYNC_DJANGO_DEBUG: "1"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
||||
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
||||
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
||||
POBSYNC_HOME: "/opt/pobsync"
|
||||
POBSYNC_DB_ENGINE: "mariadb"
|
||||
@@ -86,14 +111,20 @@ services:
|
||||
volumes:
|
||||
- pobsync_state:/opt/pobsync
|
||||
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "manage.py", "check"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
worker-mariadb:
|
||||
profiles: ["mariadb"]
|
||||
build: .
|
||||
command: python manage.py run_pobsync_worker --loop --interval 15
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POBSYNC_DJANGO_DEBUG: "1"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
|
||||
POBSYNC_DJANGO_DEBUG: "${POBSYNC_DJANGO_DEBUG:-0}"
|
||||
POBSYNC_DJANGO_SECRET_KEY: "${POBSYNC_DJANGO_SECRET_KEY:-dev-only-change-me}"
|
||||
POBSYNC_DJANGO_ALLOWED_HOSTS: "${POBSYNC_DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,0.0.0.0}"
|
||||
POBSYNC_HOME: "/opt/pobsync"
|
||||
POBSYNC_DB_ENGINE: "mariadb"
|
||||
@@ -107,10 +138,16 @@ services:
|
||||
volumes:
|
||||
- pobsync_state:/opt/pobsync
|
||||
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "manage.py", "check"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
db:
|
||||
profiles: ["mariadb"]
|
||||
image: mariadb:11
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MARIADB_DATABASE: "pobsync"
|
||||
MARIADB_USER: "pobsync"
|
||||
|
||||
Reference in New Issue
Block a user