1
0

docker-compose-wsl.yml 5.0 KB

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