services: forge-engine: image: ${REGISTRY_IMAGE:?REGISTRY_IMAGE is required}:${IMAGE_TAG:-latest} restart: unless-stopped ports: - "${PORT:-5050}:5050" volumes: - forge_projects:/app/projects # Base des comptes créateurs (auth/connection.py, data/users.db) et # clé de session Flask (core/flask_app.py, data/secret_key) — # jusqu'ici ni l'un ni l'autre n'était persisté : chaque déploiement # (nouveau conteneur) repartait d'un data/ vide, donc d'une base de # comptes vide ("premier compte = admin" recommençait à zéro) et # d'une nouvelle clé de session (tout le monde déconnecté). - forge_data:/app/data environment: # Réinitialisation de mot de passe par email (voir auth/send_email.py) # — laissés vides ici tant qu'ils ne sont pas définis dans le .env du # serveur : l'appli continue de fonctionner sans, l'envoi d'email # échoue juste silencieusement côté utilisateur (logué côté serveur). SMTP_HOST: ${SMTP_HOST:-} SMTP_PORT: ${SMTP_PORT:-587} SMTP_USER: ${SMTP_USER:-} SMTP_PASSWORD: ${SMTP_PASSWORD:-} SMTP_FROM: ${SMTP_FROM:-} # SonarQube (rapport qualité — voir sonar-project.properties, CODE_QUALITY.md). # Base PostgreSQL dédiée (jamais la H2 embarquée par défaut, pas adaptée # en usage durable) — mêmes images que la stack locale (WSL, # ~/sonarqube-stack/docker-compose.yml) pour rester cohérent. # SONAR_DB_PASSWORD : requis, à définir dans le .env du serveur (jamais # en dur ici) — même convention que REGISTRY_IMAGE ci-dessus. # Port lié à 127.0.0.1 uniquement (jamais 0.0.0.0) : SonarQube n'est # JAMAIS exposé directement sur internet, seul Caddy (sur l'hôte, voir # sonar.forgebase.fr) reverse-proxy vers ce port local avec TLS # (Let's Encrypt) devant. sonar-postgres: image: postgres:16 restart: unless-stopped environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: ${SONAR_DB_PASSWORD:?SONAR_DB_PASSWORD is required} POSTGRES_DB: sonarqube volumes: - sonar_postgres_data:/var/lib/postgresql/data sonarqube: image: sonarqube:community restart: unless-stopped depends_on: - sonar-postgres environment: SONAR_JDBC_URL: jdbc:postgresql://sonar-postgres:5432/sonarqube SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: ${SONAR_DB_PASSWORD:?SONAR_DB_PASSWORD is required} ports: - "127.0.0.1:9000:9000" volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_logs:/opt/sonarqube/logs volumes: forge_projects: forge_data: sonar_postgres_data: sonarqube_data: sonarqube_extensions: sonarqube_logs: