docker-compose.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. services:
  2. mysql:
  3. build:
  4. context: ./docker/mysql
  5. ports:
  6. - "3306:3306"
  7. volumes:
  8. - mysql_data:/var/lib/mysql
  9. - ./my.cnf:/etc/mysql/conf.d/custom_ai_app.cnf
  10. - ./init.sql:/docker-entrypoint-initdb.d/1-init.sql
  11. environment:
  12. - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
  13. healthcheck:
  14. test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
  15. interval: 10s
  16. timeout: 5s
  17. retries: 20
  18. restart: always
  19. logging:
  20. driver: "json-file"
  21. options:
  22. max-size: "50m"
  23. max-file: "3"
  24. ingest:
  25. build:
  26. context: .
  27. dockerfile: docker/ingest/Dockerfile
  28. environment:
  29. - DB_HOST=mysql
  30. - DB_USER=food_loader
  31. - DB_PASS=${DB_LOADER_PASS}
  32. volumes:
  33. - ./:/app
  34. profiles:
  35. - manual
  36. ollama:
  37. image: ollama/ollama:latest
  38. volumes:
  39. - ollama_data:/root/.ollama
  40. restart: always
  41. logging:
  42. driver: "json-file"
  43. options:
  44. max-size: "50m"
  45. max-file: "3"
  46. searxng:
  47. image: searxng/searxng:latest
  48. ports:
  49. - "8085:8080"
  50. volumes:
  51. - ./searxng:/etc/searxng
  52. environment:
  53. - SEARXNG_BASE_URL=http://localhost:8080/
  54. restart: always
  55. logging:
  56. driver: "json-file"
  57. options:
  58. max-size: "50m"
  59. max-file: "3"
  60. app:
  61. build:
  62. context: .
  63. dockerfile: docker/app/Dockerfile
  64. ports:
  65. - "8502:8501"
  66. environment:
  67. - DB_HOST=mysql
  68. - DB_USER=food_reader
  69. - DB_PASS=${DB_READER_PASS}
  70. - APP_AUTH_USER=food_app_auth
  71. - APP_AUTH_PASS=${DB_APP_AUTH_PASS}
  72. - OLLAMA_HOST=http://ollama:11434
  73. - SEARXNG_HOST=http://searxng:8080
  74. restart: always
  75. logging:
  76. driver: "json-file"
  77. options:
  78. max-size: "50m"
  79. max-file: "3"
  80. nginx:
  81. image: nginx:latest
  82. ports:
  83. - "80:80"
  84. volumes:
  85. - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
  86. restart: always
  87. logging:
  88. driver: "json-file"
  89. options:
  90. max-size: "50m"
  91. max-file: "3"
  92. zabbix-server:
  93. image: zabbix/zabbix-server-mysql:ubuntu-7.0-latest
  94. environment:
  95. - DB_SERVER_HOST=mysql
  96. - MYSQL_USER=zabbix
  97. - MYSQL_PASSWORD=${MYSQL_ZABBIX_PASSWORD}
  98. - ZBX_SNMPTRAPPER=1
  99. restart: always
  100. logging:
  101. driver: "json-file"
  102. options:
  103. max-size: "50m"
  104. max-file: "3"
  105. ports:
  106. - "10051:10051"
  107. zabbix-web:
  108. image: zabbix/zabbix-web-nginx-mysql:ubuntu-7.0-latest
  109. ports:
  110. - "8081:8080"
  111. - "8444:8443"
  112. environment:
  113. - DB_SERVER_HOST=mysql
  114. - MYSQL_USER=zabbix
  115. - MYSQL_PASSWORD=${MYSQL_ZABBIX_PASSWORD}
  116. - ZBX_SERVER_HOST=zabbix-server
  117. - PHP_TZ=Europe/Paris
  118. restart: always
  119. logging:
  120. driver: "json-file"
  121. options:
  122. max-size: "50m"
  123. max-file: "3"
  124. zabbix-agent:
  125. image: zabbix/zabbix-agent:ubuntu-7.0-latest
  126. environment:
  127. - ZBX_HOSTNAME=DistributedNode
  128. - ZBX_SERVER_HOST=zabbix-server
  129. privileged: true
  130. pid: "host"
  131. volumes:
  132. - /var/run:/var/run
  133. restart: always
  134. logging:
  135. driver: "json-file"
  136. options:
  137. max-size: "50m"
  138. max-file: "3"
  139. airflow-webserver:
  140. image: apache/airflow:2.8.1
  141. environment:
  142. - AIRFLOW__CORE__EXECUTOR=SequentialExecutor
  143. - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=sqlite:////opt/airflow/data/airflow.db
  144. - AIRFLOW__CORE__LOAD_EXAMPLES=False
  145. ports:
  146. - "8082:8080"
  147. volumes:
  148. - ./dags:/opt/airflow/dags
  149. - ./logs:/opt/airflow/logs
  150. - ./data:/opt/airflow/data
  151. - /var/run/docker.sock:/var/run/docker.sock
  152. command: webserver
  153. restart: always
  154. logging:
  155. driver: "json-file"
  156. options:
  157. max-size: "50m"
  158. max-file: "3"
  159. airflow-scheduler:
  160. image: apache/airflow:2.8.1
  161. environment:
  162. - AIRFLOW__CORE__EXECUTOR=SequentialExecutor
  163. - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=sqlite:////opt/airflow/data/airflow.db
  164. - AIRFLOW__CORE__LOAD_EXAMPLES=False
  165. volumes:
  166. - ./dags:/opt/airflow/dags
  167. - ./logs:/opt/airflow/logs
  168. - ./data:/opt/airflow/data
  169. - /var/run/docker.sock:/var/run/docker.sock
  170. command: bash -c "airflow db migrate && airflow users create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin && airflow scheduler"
  171. restart: always
  172. logging:
  173. driver: "json-file"
  174. options:
  175. max-size: "50m"
  176. max-file: "3"
  177. volumes:
  178. mysql_data:
  179. ollama_data: