docker-compose.yml 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. version: '3.8'
  2. services:
  3. # Serveur Web Nginx
  4. web:
  5. image: nginx:latest
  6. container_name: nginx_server
  7. ports:
  8. - "8080:80"
  9. volumes:
  10. - ./html:/usr/share/nginx/html:ro
  11. depends_on:
  12. - app
  13. # Serveur Web Node.js
  14. node_app:
  15. image: node:latest
  16. container_name: node_server
  17. working_dir: /usr/src/app
  18. volumes:
  19. - ./node_app:/usr/src/app
  20. ports:
  21. - "3000:3000"
  22. command: bash -c "npm install && npm start"
  23. # Serveur PHP
  24. app:
  25. image: php:7.4-fpm
  26. container_name: php_server
  27. volumes:
  28. - ./html:/var/www/html
  29. depends_on:
  30. - db
  31. # Serveur MySQL
  32. db:
  33. image: mysql:5.7
  34. container_name: mysql_db
  35. environment:
  36. MYSQL_ROOT_PASSWORD: rootpassword
  37. MYSQL_DATABASE: mydb
  38. MYSQL_USER: user
  39. MYSQL_PASSWORD: userpassword
  40. ports:
  41. - "3306:3306"
  42. volumes:
  43. - db_data:/var/lib/mysql
  44. # Serveur Redis
  45. cache:
  46. image: redis:latest
  47. container_name: redis_cache
  48. ports:
  49. - "6379:6379"
  50. # Serveur de fichiers Samba
  51. file_server:
  52. image: dperson/samba
  53. container_name: samba_server
  54. environment:
  55. TZ: Europe/Paris
  56. USERNAME: user
  57. PASSWORD: password
  58. ports:
  59. - "139:139"
  60. - "445:445"
  61. volumes:
  62. - ./shared:/mount
  63. # Serveur Proxy Squid
  64. proxy:
  65. image: sameersbn/squid:latest
  66. container_name: squid_proxy
  67. ports:
  68. - "3128:3128"
  69. volumes:
  70. - ./squid:/etc/squid
  71. # Serveur Email Postfix
  72. mail:
  73. image: mwader/postfix-relay
  74. container_name: mail_server
  75. environment:
  76. RELAYHOST: "[smtp.gmail.com]:587"
  77. RELAYUSER: "your-email@gmail.com"
  78. RELAYPASS: "your-email-password"
  79. ports:
  80. - "587:587"
  81. # Serveur de métriques Prometheus
  82. prometheus:
  83. image: prom/prometheus:latest
  84. container_name: prometheus_server
  85. volumes:
  86. - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
  87. ports:
  88. - "9090:9090"
  89. # Serveur de monitoring Grafana
  90. grafana:
  91. image: grafana/grafana:latest
  92. container_name: grafana_server
  93. environment:
  94. - GF_SECURITY_ADMIN_USER=admin
  95. - GF_SECURITY_ADMIN_PASSWORD=admin
  96. ports:
  97. - "3001:3000"
  98. depends_on:
  99. - prometheus
  100. volumes:
  101. - grafana_data:/var/lib/grafana
  102. # Serveur de qualité de code SonarQube
  103. sonarqube:
  104. image: sonarqube:community
  105. container_name: sonarqube_server
  106. ports:
  107. - "9000:9000"
  108. environment:
  109. SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: "true"
  110. volumes:
  111. - sonarqube_data:/opt/sonarqube/data
  112. - sonarqube_extensions:/opt/sonarqube/extensions
  113. - sonarqube_logs:/opt/sonarqube/logs
  114. # Serveur CI/CD Jenkins
  115. jenkins:
  116. image: jenkins/jenkins:lts
  117. container_name: jenkins_server
  118. user: root
  119. ports:
  120. - "8081:8080"
  121. - "50000:50000"
  122. volumes:
  123. - jenkins_home:/var/jenkins_home
  124. # Serveur Git auto-hébergé Gogs
  125. gogs:
  126. image: gogs/gogs:latest
  127. container_name: gogs_server
  128. ports:
  129. - "3002:3000"
  130. - "10022:22"
  131. volumes:
  132. - gogs_data:/data
  133. volumes:
  134. db_data:
  135. grafana_data:
  136. sonarqube_data:
  137. sonarqube_extensions:
  138. sonarqube_logs:
  139. jenkins_home:
  140. gogs_data: