102 lines
3.2 KiB
YAML
102 lines
3.2 KiB
YAML
services:
|
|
db:
|
|
image: postgis/postgis:18-3.6
|
|
container_name: ${CONTAINER_PREFIX}_db
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:${DB_HOST_PORT:-5438}:5432" # Conserve l'accès local sécurisé pour l'hôte (port personnalisable)
|
|
environment:
|
|
POSTGRES_DB: streetup
|
|
POSTGRES_USER: streetup_admin
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
volumes:
|
|
- ${SRV_DIR:-/srv/streetup}/db_data:/var/lib/postgresql
|
|
networks:
|
|
- streetup_network
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -U streetup_admin -d streetup" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
web:
|
|
# Utilise l'image avec le tag approprié (latest en prod, test en environnement de test)
|
|
image: ghcr.io/kdeterme/streetup:${IMAGE_TAG:-latest}
|
|
container_name: ${CONTAINER_PREFIX}_web
|
|
restart: unless-stopped
|
|
command: /docker-entrypoint.sh
|
|
networks:
|
|
- streetup_network
|
|
volumes:
|
|
- ${SRV_DIR:-/srv/streetup}/media:/app/media
|
|
- ${SRV_DIR:-/srv/streetup}/private_media:/app/private_media
|
|
- ${SRV_DIR:-/srv/streetup}/static:/app/static
|
|
- ${SRV_DIR:-/srv/streetup}/backups:/app/backups
|
|
- ${BACKUP_HOST_SSH_KEY:-${HOME}/.ssh/id_ed25519}:/app/backup_key:ro
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- DB_HOST=db
|
|
- DB_PORT=5432
|
|
- GDAL_LIBRARY_PATH=/opt/conda/envs/streetup-env/lib/libgdal.so
|
|
- GEOS_LIBRARY_PATH=/opt/conda/envs/streetup-env/lib/libgeos_c.so
|
|
- PROJ_DATA=/opt/conda/envs/streetup-env/share/proj
|
|
- LOG_FILE_PATH=/app/django.log
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
|
|
rclone-backup:
|
|
image: rclone/rclone:latest
|
|
container_name: ${CONTAINER_PREFIX}_backup_rclone
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ${SRV_DIR:-/srv/streetup}/media:/data/media:ro
|
|
- ${SRV_DIR:-/srv/streetup}/private_media:/data/private_media:ro
|
|
- ./rclone:/config/rclone
|
|
environment:
|
|
- BACKUP_INTERVAL=86400
|
|
- DESTINATION=gdrive:streetup_backup
|
|
entrypoint: >
|
|
sh -c '
|
|
echo "=== Démarrage du daemon de sauvegarde Rclone ===";
|
|
while true; do
|
|
echo "=== Début de la synchronisation : $$(date) ===";
|
|
rclone sync /data/media $${DESTINATION}/media --verbose;
|
|
rclone sync /data/private_media $${DESTINATION}/private_media --verbose;
|
|
echo "=== Fin de la synchronisation : $$(date) ===";
|
|
echo "Sommeil de $${BACKUP_INTERVAL} secondes...";
|
|
sleep $${BACKUP_INTERVAL};
|
|
done
|
|
'
|
|
|
|
caddy:
|
|
image: caddy:latest
|
|
container_name: ${CONTAINER_PREFIX}_caddy
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
- "443:443/udp"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- ${CONTAINER_PREFIX}_caddy_data:/data
|
|
- ${CONTAINER_PREFIX}_caddy_config:/config
|
|
- ${SRV_DIR:-/srv/streetup}/static:/srv/static:ro
|
|
- ${SRV_DIR:-/srv/streetup}/media:/srv/media:ro
|
|
- /srv/streetup-test/static:/srv/static_test:ro
|
|
- /srv/streetup-test/media:/srv/media_test:ro
|
|
depends_on:
|
|
- web
|
|
networks:
|
|
- streetup_network
|
|
|
|
volumes:
|
|
streetup_prod_caddy_data:
|
|
streetup_prod_caddy_config:
|
|
streetup_test_caddy_data:
|
|
streetup_test_caddy_config:
|
|
|
|
networks:
|
|
streetup_network:
|
|
external: true
|