Docker prod
This commit is contained in:
68
docker-compose.prod.yml
Normal file
68
docker-compose.prod.yml
Normal file
@@ -0,0 +1,68 @@
|
||||
# ═══════════════════════════════════════════════════════
|
||||
# Jool International — Docker Compose PRODUCTION
|
||||
# Stack : PostgreSQL 16 · Django/Gunicorn · Caddy 2
|
||||
# Usage : docker compose -f docker-compose.prod.yml up -d --build
|
||||
# ═══════════════════════════════════════════════════════
|
||||
|
||||
services:
|
||||
|
||||
# ── Base de données PostgreSQL ──────────────────────────
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
env_file: .env.prod
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
# ── Application Django (Gunicorn) ───────────────────────
|
||||
web:
|
||||
build: .
|
||||
restart: always
|
||||
env_file: .env.prod
|
||||
volumes:
|
||||
- static_volume:/app/staticfiles
|
||||
- media_volume:/app/media
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
command: >
|
||||
sh -c "python manage.py collectstatic --noinput &&
|
||||
python manage.py migrate --noinput &&
|
||||
python manage.py compilemessages --locale=en &&
|
||||
gunicorn config.wsgi:application
|
||||
--bind 0.0.0.0:8000
|
||||
--workers 3
|
||||
--timeout 60
|
||||
--max-requests 1000
|
||||
--max-requests-jitter 100
|
||||
--access-logfile -
|
||||
--error-logfile -"
|
||||
|
||||
# ── Caddy (reverse proxy + HTTPS automatique) ───────────
|
||||
caddy:
|
||||
image: caddy:2-alpine
|
||||
restart: always
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "443:443/udp" # HTTP/3 / QUIC
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- static_volume:/app/staticfiles:ro
|
||||
- media_volume:/app/media:ro
|
||||
- caddy_data:/data # certificats Let's Encrypt (persistants)
|
||||
- caddy_config:/config # état interne Caddy
|
||||
depends_on:
|
||||
- web
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
static_volume:
|
||||
media_volume:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
Reference in New Issue
Block a user