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