services: db: image: postgres:18.6 restart: unless-stopped environment: POSTGRES_DB: ${DATABASE_NAME} POSTGRES_USER: ${DATABASE_USERNAME} POSTGRES_PASSWORD: ${DATABASE_PASSWORD} volumes: - postgres_data:/var/lib/postgresql healthcheck: test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}" ] interval: 10s timeout: 5s retries: 5 pyrigs: build: . restart: unless-stopped environment: SECRET_KEY: ${SECRET_KEY} DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS} DOMAIN: ${DOMAIN:-example.com} DEBUG: ${DEBUG:-false} STAGING: ${STAGING:-false} SESSION_COOKIE_SECURE_ENABLED: ${SESSION_COOKIE_SECURE_ENABLED:-true} CSRF_COOKIE_SECURE_ENABLED: ${CSRF_COOKIE_SECURE_ENABLED:-true} FORUM_WEBHOOK_SECRET: ${FORUM_WEBHOOK_SECRET} DATABASE_ENGINE: ${DATABASE_ENGINE:-postgresql} DATABASE_NAME: ${DATABASE_NAME} DATABASE_USERNAME: ${DATABASE_USERNAME} DATABASE_PASSWORD: ${DATABASE_PASSWORD} DATABASE_HOST: ${DATABASE_HOST:-db} DATABASE_PORT: ${DATABASE_PORT:-5432} EMAIL_HOST: ${EMAIL_HOST} EMAIL_PORT: ${EMAIL_PORT:-25} EMAIL_HOST_USER: ${EMAIL_HOST_USER} EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD} EMAIL_USE_TLS: ${EMAIL_USE_TLS:-false} EMAIL_USE_SSL: ${EMAIL_USE_SSL:-false} EMAIL_FROM: ${EMAIL_FROM} HCAPTCHA_SITEKEY: ${HCAPTCHA_SITEKEY:-10000000-ffff-ffff-ffff-000000000001} HCAPTCHA_SECRET: ${HCAPTCHA_SECRET:-0x0000000000000000000000000000000000000000} SENTRY_DSN: ${SENTRY_DSN:-} expose: - "8000" depends_on: db: condition: service_healthy command: - sh - -c - | python manage.py migrate --noinput && gunicorn \ --bind 0.0.0.0:8000 \ --workers 2 \ PyRIGS.wsgi develop: # Create a `watch` configuration to update the app watch: # Sync the working directory with the `/app` directory in the container - action: sync path: . target: /app # Exclude the project virtual environment ignore: - .venv/ # Rebuild the image on changes to the `pyproject.toml` - action: rebuild path: ./pyproject.toml nginx: image: nginx:stable-alpine restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - ./nginx/certs:/etc/nginx/certs:ro - ./nginx/certbot:/var/www/certbot:ro depends_on: - pyrigs volumes: postgres_data: