docker-compose.prod.yml 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. version: '3.8'
  2. networks:
  3. private:
  4. web:
  5. external: true
  6. name: web
  7. volumes:
  8. mongo_data_prod:
  9. driver: local
  10. driver_opts:
  11. type: none
  12. o: bind
  13. device: /srv/mongo/data_prod # Comme en préprod, pour cohérence et persistance
  14. mongo_backups_prod:
  15. driver: local
  16. services:
  17. express_prod:
  18. build:
  19. context: ./express-server
  20. networks:
  21. - web
  22. - private
  23. expose: # Remplace les "ports" pour éviter de lier sur l’hôte et éviter les conflits
  24. - "4000"
  25. labels:
  26. - traefik.enable=true
  27. - traefik.http.routers.express_prod.rule=Host(`api-prod.foodgame.fr`)
  28. - traefik.http.services.express_prod.loadbalancer.server.port=4000
  29. - traefik.http.routers.express_prod.entrypoints=websecure
  30. - traefik.http.routers.express_prod.tls.certresolver=myresolver
  31. depends_on:
  32. - database_prod
  33. environment:
  34. - MONGODB_URI=mongodb://admin:azerty10@database_prod:27017/mean-fatboar-db?authSource=admin
  35. restart: unless-stopped
  36. database_prod:
  37. image: mongo:4.4.6
  38. ports:
  39. - "27017:27017"
  40. volumes:
  41. - ./backup:/backup
  42. - mongo_data_prod:/data/db
  43. environment:
  44. - MONGO_INITDB_ROOT_USERNAME=admin
  45. - MONGO_INITDB_ROOT_PASSWORD=azerty10
  46. - MONGO_INITDB_DATABASE=mean-fatboar-db
  47. networks:
  48. - private
  49. restart: unless-stopped
  50. mongodb-backup-prod:
  51. image: tiredofit/mongodb-backup:latest
  52. container_name: mongodb-backup-prod
  53. volumes:
  54. - mongo_backups_prod:/backup
  55. environment:
  56. - MONGODB_HOST=database_prod
  57. - MONGODB_PORT=27017
  58. - MONGODB_USER=admin
  59. - MONGODB_PASS=azerty10
  60. - MONGODB_AUTHENTICATION_DATABASE=admin
  61. - BACKUP_LOCATION=/backup
  62. - BACKUP_COMPRESSION=GZIP
  63. - BACKUP_SPLIT_DB=TRUE
  64. - BACKUP_BEGIN=TRUE
  65. - SCHEDULE=0 3 * * * # Sauvegarde quotidienne à 3h
  66. - BACKUP_RETAIN_DAYS=7
  67. - BACKUP_CLEANUP_TIME=0430
  68. - NOTIFICATION_TYPE=email
  69. - NOTIFICATION_EMAIL_TO=admin@foodgame.fr
  70. - DEBUG_MODE=FALSE
  71. depends_on:
  72. - database_prod
  73. networks:
  74. - private
  75. restart: unless-stopped
  76. angular_ssr_prod:
  77. build:
  78. context: ./
  79. dockerfile: build/docker/angular-ssr/Dockerfile
  80. networks:
  81. - web
  82. - private
  83. expose:
  84. - "4000"
  85. labels:
  86. - traefik.enable=true
  87. - traefik.http.routers.angular_ssr_prod.rule=Host(`fatboar.foodgame.fr`)
  88. - traefik.http.services.angular_ssr_prod.loadbalancer.server.port=4000
  89. - traefik.http.routers.angular_ssr_prod.entrypoints=websecure
  90. - traefik.http.routers.angular_ssr_prod.tls.certresolver=myresolver
  91. restart: unless-stopped
  92. # version: '3.8'
  93. # networks:
  94. # private:
  95. # web:
  96. # external: true
  97. # name: web
  98. # volumes:
  99. # mongo_data_prod:
  100. # mongo_backups_prod:
  101. # services:
  102. # express_prod:
  103. # build:
  104. # context: ./express-server
  105. # networks:
  106. # - web
  107. # - private
  108. # expose:
  109. # - "4000"
  110. # labels:
  111. # - traefik.enable=true
  112. # - traefik.http.routers.express_prod.rule=Host(`api-prod.foodgame.fr`)
  113. # - traefik.http.services.express_prod.loadbalancer.server.port=4000
  114. # - traefik.http.routers.express_prod.entrypoints=websecure
  115. # - traefik.http.routers.express_prod.tls.certresolver=myresolver
  116. # depends_on:
  117. # - database_prod
  118. # environment:
  119. # - MONGODB_URI=mongodb://admin:azerty10@database_prod:27017/mean-fatboar-db?authSource=admin
  120. # restart: unless-stopped
  121. # database_prod:
  122. # image: mongo:4.4.6
  123. # volumes:
  124. # - mongo_data_prod:/data/db
  125. # - ./backup:/backup
  126. # environment:
  127. # - MONGO_INITDB_ROOT_USERNAME=admin
  128. # - MONGO_INITDB_ROOT_PASSWORD=azerty10
  129. # - MONGO_INITDB_DATABASE=mean-fatboar-db
  130. # networks:
  131. # - private
  132. # restart: unless-stopped
  133. # mongodb-backup-prod:
  134. # image: tiredofit/mongodb-backup:latest
  135. # container_name: mongodb-backup-prod
  136. # volumes:
  137. # - mongo_backups_prod:/backup
  138. # environment:
  139. # - MONGODB_HOST=database_prod
  140. # - MONGODB_PORT=27017
  141. # - MONGODB_USER=admin
  142. # - MONGODB_PASS=azerty10
  143. # - MONGODB_AUTHENTICATION_DATABASE=admin
  144. # - BACKUP_LOCATION=/backup
  145. # - BACKUP_COMPRESSION=GZIP
  146. # - BACKUP_SPLIT_DB=TRUE
  147. # - BACKUP_BEGIN=TRUE
  148. # - SCHEDULE=0 3 * * * # Sauvegarde tous les jours à 3h du matin
  149. # - BACKUP_RETAIN_DAYS=7
  150. # - BACKUP_CLEANUP_TIME=0430
  151. # - NOTIFICATION_TYPE=email
  152. # - NOTIFICATION_EMAIL_TO=admin@foodgame.fr
  153. # - DEBUG_MODE=FALSE
  154. # depends_on:
  155. # - database_prod
  156. # networks:
  157. # - private
  158. # restart: unless-stopped
  159. # angular_ssr_prod:
  160. # build:
  161. # context: ./ # Racine Angular
  162. # dockerfile: build/docker/angular-ssr/Dockerfile
  163. # networks:
  164. # - web
  165. # - private
  166. # expose:
  167. # - "4000"
  168. # labels:
  169. # - traefik.enable=true
  170. # - traefik.http.routers.angular_ssr_prod.rule=Host(`fatboar.foodgame.fr`)
  171. # - traefik.http.services.angular_ssr_prod.loadbalancer.server.port=4000
  172. # - traefik.http.routers.angular_ssr_prod.entrypoints=websecure
  173. # - traefik.http.routers.angular_ssr_prod.tls.certresolver=myresolver
  174. # restart: unless-stopped
  175. # apache_prod:
  176. # build:
  177. # context: ./
  178. # dockerfile: build/docker/apache/Dockerfile
  179. # ports:
  180. # - "8080:80"
  181. # networks:
  182. # - web
  183. # - private
  184. # volumes:
  185. # - /var/log:/var/log/apache2
  186. # labels:
  187. # - traefik.enable=true
  188. # - traefik.http.routers.apache_prod.rule=Host(`fatboar.foodgame.fr`)
  189. # - traefik.http.services.apache_prod.loadbalancer.server.port=80
  190. # - traefik.http.routers.apache_prod.entrypoints=websecure
  191. # - traefik.http.routers.apache_prod.tls.certresolver=myresolver
  192. # restart: always
  193. # version: '3.0' # specify docker-compose version
  194. # Define the services/ containers to be run
  195. # services:
  196. # angular: # name of the first service
  197. # build: angular-client # specify the directory of the Dockerfile
  198. # ports:
  199. # - "4200:4200" # specify port mapping
  200. # express: # name of the second service
  201. # build: express-server # specify the directory of the Dockerfile
  202. # ports:
  203. # - "9991:9991" #specify ports mapping
  204. # links:
  205. # - database # link this service to the database service
  206. # database: # name of the third service
  207. # image: mongo # specify image to build container from
  208. # ports:
  209. # - "27017:27017" # specify port forwarding
  210. # version: '3'
  211. # networks:
  212. # private:
  213. # web:
  214. # external:
  215. # name: web
  216. # #pipeline-test-mean-stack-docker_default:
  217. # #pipeline-test-mean-stack-docker_private:
  218. # #grafana:
  219. # volumes:
  220. # # app_data: {}
  221. # mongo_data_prod:
  222. # services:
  223. # express_prod:
  224. # build:
  225. # context: ./express-server
  226. # ports:
  227. # - "4000:4000"
  228. # networks:
  229. # - web
  230. # - private
  231. # labels:
  232. # - traefik.enable=true
  233. # - traefik.http.routers.express_prod.rule=Host(`api-prod.foodgame.fr`)
  234. # - traefik.http.services.express_prod.loadbalancer.server.port=4000
  235. # - traefik.http.routers.express_prod.entrypoints=websecure
  236. # - traefik.http.routers.express_prod.tls.certresolver=myresolver
  237. # links:
  238. # - database_prod
  239. # restart: always
  240. # database_prod:
  241. # # container_name: mongo_"${ENV}"
  242. # image: mongo:4.4.6
  243. # ports:
  244. # - "27017:27017"
  245. # volumes:
  246. # - ./backup:/backup
  247. # - mongo_data_prod:/data/db
  248. # # - /var/lib/mongodb/data_prod:/data/db
  249. # # - database:/data/database
  250. # labels:
  251. # - traefik.enable=true
  252. # - traefik.http.routers.database_prod.rule=Host(`mongodb-prod.foodgame.fr`)
  253. # # - traefik.http.routers.apache_prod.rule=Host(`${URLMONGO}`)
  254. # - traefik.http.services.database_prod.loadbalancer.server.port=27017
  255. # - traefik.http.routers.database_prod.entrypoints=websecure
  256. # - traefik.http.routers.database_prod.tls.certresolver=myresolver
  257. # networks:
  258. # - web
  259. # - private
  260. # #- pipeline-test-FatboarProject_default
  261. # #- pipeline-test-FatboarProject_private
  262. # restart: always
  263. # apache_prod:
  264. # # container_name: apache_"${ENV}"
  265. # build:
  266. # context: ./
  267. # # dockerfile: build/docker/httpd/Dockerfile
  268. # dockerfile: build/docker/apache/Dockerfile
  269. # ports:
  270. # - "8080:80"
  271. # networks:
  272. # - web
  273. # - private
  274. # #- pipeline-test-FatboarProject_default
  275. # #- pipeline-test-FatboarProject_private
  276. # volumes:
  277. # - /var/log:/var/log/apache2
  278. # labels:
  279. # - traefik.enable=true
  280. # - traefik.http.routers.apache_prod.rule=Host(`fatboar.foodgame.fr`)
  281. # # - traefik.http.routers.apache_prod.rule=Host(`${URLANGULAR}`)
  282. # - traefik.http.services.apache_prod.loadbalancer.server.port=80
  283. # - traefik.http.routers.apache_prod.entrypoints=websecure
  284. # - traefik.http.routers.apache_prod.tls.certresolver=myresolver
  285. # restart: always