refactor: remove obsolete docker-compose configurations
This commit is contained in:
parent
bb5fcab2c2
commit
bc138c47f0
3 changed files with 0 additions and 314 deletions
|
|
@ -1,135 +0,0 @@
|
||||||
services:
|
|
||||||
panoramax_db:
|
|
||||||
image: postgis/postgis:16-3.4
|
|
||||||
container_name: panoramax_db
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: panoramax
|
|
||||||
POSTGRES_USER: panoramax_user
|
|
||||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
||||||
volumes:
|
|
||||||
- ${SRV_DIR:-/srv/panoramax}/db_data:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
- panoramax_network
|
|
||||||
healthcheck:
|
|
||||||
test: [ "CMD-SHELL", "pg_isready -U panoramax_user -d panoramax" ]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
|
|
||||||
panoramax_api:
|
|
||||||
image: panoramax/api:latest
|
|
||||||
container_name: panoramax_api
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
panoramax_db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
environment:
|
|
||||||
- DB_HOST=panoramax_db
|
|
||||||
- DB_PORT=5432
|
|
||||||
- DB_NAME=panoramax
|
|
||||||
- DB_USERNAME=panoramax_user
|
|
||||||
- DB_PASSWORD=${DB_PASSWORD}
|
|
||||||
# Désactive le traitement interne pour déléguer au picture-worker
|
|
||||||
- PICTURE_PROCESS_THREADS_LIMIT=0
|
|
||||||
# Permet à Gunicorn de faire confiance aux en-têtes de proxy (comme X-Forwarded-Proto) envoyés par Caddy
|
|
||||||
- GUNICORN_CMD_ARGS=--forwarded-allow-ips=*
|
|
||||||
# Visibilité par défaut publique pour les métadonnées (images protégées au niveau du proxy)
|
|
||||||
- API_DEFAULT_PICTURE_VISIBILITY=anyone
|
|
||||||
# ports:
|
|
||||||
# Optionnel : Exposer localement pour le débug si besoin (décommenter si nécessaire)
|
|
||||||
# - "127.0.0.1:5001:5000"
|
|
||||||
# - "5000:5000"
|
|
||||||
networks:
|
|
||||||
- panoramax_network
|
|
||||||
- streetup_network
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpus: '2.0'
|
|
||||||
memory: 2G
|
|
||||||
|
|
||||||
panoramax_worker:
|
|
||||||
image: panoramax/api:latest
|
|
||||||
restart: unless-stopped
|
|
||||||
command: picture-worker
|
|
||||||
depends_on:
|
|
||||||
panoramax_db:
|
|
||||||
condition: service_healthy
|
|
||||||
panoramax_api:
|
|
||||||
condition: service_started
|
|
||||||
panoramax_blur:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
environment:
|
|
||||||
- DB_HOST=panoramax_db
|
|
||||||
- DB_PORT=5432
|
|
||||||
- DB_NAME=panoramax
|
|
||||||
- DB_USERNAME=panoramax_user
|
|
||||||
- DB_PASSWORD=${DB_PASSWORD}
|
|
||||||
# Visibilité par défaut publique pour les métadonnées (images protégées au niveau du proxy)
|
|
||||||
- API_DEFAULT_PICTURE_VISIBILITY=anyone
|
|
||||||
networks:
|
|
||||||
- panoramax_network
|
|
||||||
deploy:
|
|
||||||
replicas: 4
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpus: '2.0'
|
|
||||||
memory: 4G
|
|
||||||
|
|
||||||
panoramax_blur:
|
|
||||||
image: panoramax/sgblur:latest
|
|
||||||
container_name: panoramax_blur
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
- WEB_CONCURRENCY=4 # Limite le nombre de workers concurrents pour préserver le CPU
|
|
||||||
- DETECT_URL=http://panoramax_detect:8001
|
|
||||||
depends_on:
|
|
||||||
panoramax_detect:
|
|
||||||
condition: service_healthy
|
|
||||||
networks:
|
|
||||||
- panoramax_network
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpus: '2.0'
|
|
||||||
memory: 1G
|
|
||||||
healthcheck:
|
|
||||||
test: python -c "import requests; requests.get('http://localhost:8000/').raise_for_status()"
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
start_period: 2s
|
|
||||||
|
|
||||||
panoramax_detect:
|
|
||||||
image: panoramax/sgblur:latest
|
|
||||||
container_name: panoramax_detect
|
|
||||||
entrypoint: ["uvicorn", "src.detect.detect_api:app", "--host", "0.0.0.0", "--port", "8001", "--workers", "4"]
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
- OMP_NUM_THREADS=1 # 1 seul thread PyTorch par processus pour éviter la surcharge de synchronisation
|
|
||||||
- MKL_NUM_THREADS=1 # 1 seul thread MKL par processus
|
|
||||||
- MKL_DYNAMIC=FALSE # Désactive la mise à l'échelle dynamique des threads de MKL
|
|
||||||
networks:
|
|
||||||
- panoramax_network
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpus: '4.0'
|
|
||||||
memory: 6G
|
|
||||||
healthcheck:
|
|
||||||
test: python -c "import requests; requests.get('http://localhost:8001/').raise_for_status()"
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
start_period: 2s
|
|
||||||
|
|
||||||
networks:
|
|
||||||
panoramax_network:
|
|
||||||
driver: bridge
|
|
||||||
streetup_network:
|
|
||||||
external: true
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
||||||
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/${IMAGE_NAME:-streetup-core}:${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
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
# ==============================================================================
|
|
||||||
# Configuration d'environnement pour Panoramax (GeoVisio)
|
|
||||||
# ==============================================================================
|
|
||||||
# Copiez ce fichier sous le nom '.env' (dans le dossier /srv/panoramax/) sur votre
|
|
||||||
# serveur de production et renseignez les valeurs appropriées.
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# 1. Sécurité et Base de données
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Le mot de passe de la base de données PostGIS dédiée de Panoramax.
|
|
||||||
# Doit correspondre à la variable de la base de données pour que l'API et
|
|
||||||
# le worker puissent s'y connecter.
|
|
||||||
DB_PASSWORD=choisissez_un_mot_de_passe_robuste
|
|
||||||
|
|
||||||
# Clé secrète de Flask utilisée pour signer les sessions et jetons (tokens).
|
|
||||||
# Requis pour générer le jeton d'administration permanent.
|
|
||||||
# Générez une clé robuste avec : openssl rand -hex 32
|
|
||||||
FLASK_SECRET_KEY=choisissez_une_cle_secrete_aleatoire
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# 2. Stockage S3 Privé (OVHcloud Roubaix - rbx)
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Identifiants de l'utilisateur ayant le rôle 'ObjectStore operator' sur OVHcloud.
|
|
||||||
# IMPORTANT : Le bucket S3 doit être configuré en ACCÈS PRIVÉ (non public).
|
|
||||||
AWS_ACCESS_KEY_ID=votre_access_key_id_ovh
|
|
||||||
AWS_SECRET_ACCESS_KEY=votre_secret_access_key_ovh
|
|
||||||
|
|
||||||
# URL d'accès PyFilesystem vers le stockage S3 d'OVHcloud (Roubaix).
|
|
||||||
# Remplacez 'nom-du-bucket' par le nom de votre bucket S3 privé créé sur OVHcloud.
|
|
||||||
# Notez que le endpoint_url doit être encodé pour l'URL (https%3A%2F%2Fs3.rbx.io.cloud.ovh.net)
|
|
||||||
FS_URL=
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# 3. URLs de l'API et Performance (Option B : Liens Privés + Signature)
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# URL publique principale de l'API Panoramax.
|
|
||||||
API_PUBLIC_URL=
|
|
||||||
|
|
||||||
# Avec l'Option B (Sécurité maximale), nous désactivons le service direct de photos
|
|
||||||
# publiques par Panoramax. Nous laissons ces variables commentées.
|
|
||||||
#
|
|
||||||
# C'est StreetUp (Django) qui utilisera les mêmes identifiants AWS ci-dessus pour
|
|
||||||
# générer des URLs de lecture S3 temporaires signées (S3 Presigned URLs)
|
|
||||||
# valables 30 minutes (1800 secondes) pour les utilisateurs connectés.
|
|
||||||
#
|
|
||||||
# API_PERMANENT_PICTURES_PUBLIC_URL=
|
|
||||||
# API_DERIVATES_PICTURES_PUBLIC_URL=
|
|
||||||
|
|
||||||
# Stratégie de génération des vignettes/tuiles.
|
|
||||||
# 'PREPROCESS' force le picture-worker à précalculer et envoyer toutes les vignettes
|
|
||||||
# sur le S3 dès le versement de la photo par StreetUp.
|
|
||||||
PICTURE_PROCESS_DERIVATES_STRATEGY=PREPROCESS
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# 4. Authentification & Sécurité d'écriture
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Désactivation de l'authentification OAuth externe (laissé vide).
|
|
||||||
# Aucun utilisateur externe ne pourra se connecter via navigateur.
|
|
||||||
OAUTH_PROVIDER=
|
|
||||||
|
|
||||||
# Force l'authentification obligatoire pour tous les téléversements (uploads).
|
|
||||||
# Seul StreetUp, muni du jeton d'administration généré en console, pourra verser
|
|
||||||
# des images et créer des séquences après avoir validé leur qualité.
|
|
||||||
API_FORCE_AUTH_ON_UPLOAD=true
|
|
||||||
|
|
||||||
# Visibilité par défaut pour les nouvelles images ('anyone', 'logged-only' ou 'owner-only').
|
|
||||||
# Par défaut, nous utilisons 'anyone' (le catalogue de métadonnées reste accessible
|
|
||||||
# au public), et nous protégeons l'accès direct aux images (S3) au niveau du proxy.
|
|
||||||
API_DEFAULT_PICTURE_VISIBILITY=anyone
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# 5. Floutage (Anonymisation) des visages et plaques
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Renseignez l'URL du service de floutage (SGBlur) exécuté localement.
|
|
||||||
# Si cette variable est commentée ou vide, le floutage automatique est désactivé.
|
|
||||||
API_BLUR_URL=
|
|
||||||
Loading…
Reference in a new issue