|
|
@@ -0,0 +1,154 @@
|
|
|
+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:
|