version: '3.8' services: # Serveur Web Nginx web: image: nginx:latest container_name: nginx_server ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html:ro depends_on: - app # Serveur Web Node.js node_app: image: node:latest container_name: node_server working_dir: /usr/src/app volumes: - ./node_app:/usr/src/app ports: - "3000:3000" command: bash -c "npm install && npm start" # Serveur PHP app: image: php:7.4-fpm container_name: php_server volumes: - ./html:/var/www/html depends_on: - db # Serveur MySQL db: image: mysql:5.7 container_name: mysql_db environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: userpassword ports: - "3306:3306" volumes: - db_data:/var/lib/mysql # Serveur Redis cache: image: redis:latest container_name: redis_cache ports: - "6379:6379" # Serveur de fichiers Samba file_server: image: dperson/samba container_name: samba_server environment: TZ: Europe/Paris USERNAME: user PASSWORD: password ports: - "139:139" - "445:445" volumes: - ./shared:/mount # Serveur Proxy Squid proxy: image: sameersbn/squid:latest container_name: squid_proxy ports: - "3128:3128" volumes: - ./squid:/etc/squid # Serveur Email Postfix mail: image: mwader/postfix-relay container_name: mail_server environment: RELAYHOST: "[smtp.gmail.com]:587" RELAYUSER: "your-email@gmail.com" RELAYPASS: "your-email-password" ports: - "587:587" # Serveur de métriques Prometheus prometheus: image: prom/prometheus:latest container_name: prometheus_server volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" # Serveur de monitoring Grafana grafana: image: grafana/grafana:latest container_name: grafana_server environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin ports: - "3001:3000" depends_on: - prometheus volumes: - grafana_data:/var/lib/grafana # Serveur de qualité de code SonarQube sonarqube: image: sonarqube:community container_name: sonarqube_server ports: - "9000:9000" environment: SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: "true" volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_logs:/opt/sonarqube/logs # Serveur CI/CD Jenkins jenkins: image: jenkins/jenkins:lts container_name: jenkins_server user: root ports: - "8081:8080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home # Serveur Git auto-hébergé Gogs gogs: image: gogs/gogs:latest container_name: gogs_server ports: - "3002:3000" - "10022:22" volumes: - gogs_data:/data volumes: db_data: grafana_data: sonarqube_data: sonarqube_extensions: sonarqube_logs: jenkins_home: gogs_data: