83 lines
2.6 KiB
YAML
83 lines
2.6 KiB
YAML
services:
|
|
db:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
environment:
|
|
POSTGRES_DB: ${SQL_DATABASE:-busmanager}
|
|
POSTGRES_USER: ${SQL_USER:-busmanager}
|
|
POSTGRES_PASSWORD: ${SQL_PASSWORD}
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${SQL_USER:-busmanager}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
web:
|
|
build: .
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${APP_PORT:-8000}:8000"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
SECRET_KEY: ${SECRET_KEY}
|
|
DEBUG: ${DEBUG:-False}
|
|
ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost}
|
|
SQL_ENGINE: django.db.backends.postgresql
|
|
SQL_DATABASE: ${SQL_DATABASE:-busmanager}
|
|
SQL_USER: ${SQL_USER:-busmanager}
|
|
SQL_PASSWORD: ${SQL_PASSWORD}
|
|
SQL_HOST: db
|
|
SQL_PORT: 5432
|
|
STATIC_ROOT: /app/staticfiles
|
|
EMAIL_HOST: ${EMAIL_HOST:-}
|
|
EMAIL_PORT: ${EMAIL_PORT:-25}
|
|
# Optional: Azure AD SSO
|
|
AZURE_CLIENT_ID: ${AZURE_CLIENT_ID:-}
|
|
AZURE_CLIENT_SECRET: ${AZURE_CLIENT_SECRET:-}
|
|
AZURE_REDIRECT_URI: ${AZURE_REDIRECT_URI:-}
|
|
AZURE_AUTHORITY: ${AZURE_AUTHORITY:-}
|
|
# Optional: Telstra SMS
|
|
TELSTRA_CLIENT_ID: ${TELSTRA_CLIENT_ID:-}
|
|
TELSTRA_CLIENT_SECRET: ${TELSTRA_CLIENT_SECRET:-}
|
|
volumes:
|
|
- static_files:/app/staticfiles
|
|
|
|
# Runs the nightly coordinator status check (django-crontab job)
|
|
# Avoids needing a cron daemon inside the web container, which causes
|
|
# runc PID errors in unprivileged LXC environments.
|
|
cron:
|
|
build: .
|
|
restart: unless-stopped
|
|
entrypoint: >
|
|
sh -c "echo '0 6 * * * python /app/manage.py nightly_check_active_status >> /proc/1/fd/1 2>&1'
|
|
| crontab - && crond -f -d 8"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
SECRET_KEY: ${SECRET_KEY}
|
|
DEBUG: ${DEBUG:-False}
|
|
ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost}
|
|
SQL_ENGINE: django.db.backends.postgresql
|
|
SQL_DATABASE: ${SQL_DATABASE:-busmanager}
|
|
SQL_USER: ${SQL_USER:-busmanager}
|
|
SQL_PASSWORD: ${SQL_PASSWORD}
|
|
SQL_HOST: db
|
|
SQL_PORT: 5432
|
|
EMAIL_HOST: ${EMAIL_HOST:-}
|
|
EMAIL_PORT: ${EMAIL_PORT:-25}
|
|
AZURE_CLIENT_ID: ${AZURE_CLIENT_ID:-}
|
|
AZURE_CLIENT_SECRET: ${AZURE_CLIENT_SECRET:-}
|
|
AZURE_REDIRECT_URI: ${AZURE_REDIRECT_URI:-}
|
|
AZURE_AUTHORITY: ${AZURE_AUTHORITY:-}
|
|
TELSTRA_CLIENT_ID: ${TELSTRA_CLIENT_ID:-}
|
|
TELSTRA_CLIENT_SECRET: ${TELSTRA_CLIENT_SECRET:-}
|
|
|
|
volumes:
|
|
postgres_data:
|
|
static_files:
|