services: es01: container_name: ragflow-es-01 profiles: - elasticsearch image: docker.citory.tech/mirror/elasticsearch:${STACK_VERSION} volumes: - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/data/esdata01:/usr/share/elasticsearch/data ports: - ${ES_PORT}:9200 env_file: .env environment: - node.name=es01 - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - bootstrap.memory_lock=false - discovery.type=single-node - xpack.security.enabled=true - xpack.security.http.ssl.enabled=false - xpack.security.transport.ssl.enabled=false - cluster.routing.allocation.disk.watermark.low=5gb - cluster.routing.allocation.disk.watermark.high=3gb - cluster.routing.allocation.disk.watermark.flood_stage=2gb - TZ=${TIMEZONE} mem_limit: ${MEM_LIMIT} ulimits: memlock: soft: -1 hard: -1 healthcheck: test: ["CMD-SHELL", "curl http://localhost:9200"] interval: 10s timeout: 10s retries: 120 networks: - ragflow restart: on-failure infinity: container_name: ragflow-infinity profiles: - infinity image: docker.citory.tech/mirror/infiniflow/infinity:v0.6.0-dev3 volumes: - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/data/infinity_data:/var/infinity - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/infinity_conf.toml:/infinity_conf.toml command: ["-f", "/infinity_conf.toml"] ports: - ${INFINITY_THRIFT_PORT}:23817 - ${INFINITY_HTTP_PORT}:23820 - ${INFINITY_PSQL_PORT}:5432 env_file: .env environment: - TZ=${TIMEZONE} mem_limit: ${MEM_LIMIT} ulimits: nofile: soft: 500000 hard: 500000 networks: - ragflow healthcheck: test: ["CMD", "curl", "http://localhost:23820/admin/node/current"] interval: 10s timeout: 10s retries: 120 restart: on-failure mysql: # mysql:5.7 linux/arm64 image is unavailable. image: docker.citory.tech/mirror/mysql:8.0.39 container_name: ragflow-mysql env_file: .env environment: - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - TZ=${TIMEZONE} command: --max_connections=1000 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password --tls_version="TLSv1.2,TLSv1.3" --init-file /data/application/init.sql ports: - ${MYSQL_PORT}:3306 volumes: - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/data/mysql_data:/var/lib/mysql - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/init.sql:/data/application/init.sql networks: - ragflow healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-uroot", "-p${MYSQL_PASSWORD}"] interval: 10s timeout: 10s retries: 3 restart: on-failure minio: image: docker.citory.tech/mirror/minio/minio:RELEASE.2023-12-20T01-00-02Z container_name: ragflow-minio command: server --console-address ":9001" /data ports: - ${MINIO_PORT}:9000 - ${MINIO_CONSOLE_PORT}:9001 env_file: .env environment: - MINIO_ROOT_USER=${MINIO_USER} - MINIO_ROOT_PASSWORD=${MINIO_PASSWORD} - TZ=${TIMEZONE} volumes: - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/data/minio_data:/data networks: - ragflow restart: on-failure redis: # swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/valkey/valkey:8 image: docker.citory.tech/mirror/valkey/valkey:8 container_name: ragflow-redis command: redis-server --requirepass ${REDIS_PASSWORD} --maxmemory 128mb --maxmemory-policy allkeys-lru env_file: .env ports: - ${REDIS_PORT}:6379 volumes: - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/data/redis_data:/data networks: - ragflow restart: on-failure ragflow: depends_on: mysql: condition: service_healthy image: ${RAGFLOW_IMAGE} container_name: ragflow-server ports: - ${SVR_HTTP_PORT}:9380 - ${HTTP_PORT}:80 # - 443:443 volumes: - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/ragflow-logs:/ragflow/logs - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/nginx/proxy.conf:/etc/nginx/proxy.conf - /home/deepgeek/data/data_local/server/ragflow/ragflow-docker/nginx/nginx.conf:/etc/nginx/nginx.conf env_file: .env environment: - TZ=${TIMEZONE} - HF_ENDPOINT=${HF_ENDPOINT} - MACOS=${MACOS} networks: - ragflow restart: on-failure # https://docs.docker.com/engine/daemon/prometheus/#create-a-prometheus-configuration # If you're using Docker Desktop, the --add-host flag is optional. This flag makes sure that the host's internal IP gets exposed to the Prometheus container. extra_hosts: - "host.docker.internal:host-gateway" # executor: # depends_on: # mysql: # condition: service_healthy # image: ${RAGFLOW_IMAGE} # container_name: ragflow-executor # volumes: # - ./ragflow-logs:/ragflow/logs # - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf # env_file: .env # environment: # - TZ=${TIMEZONE} # - HF_ENDPOINT=${HF_ENDPOINT} # - MACOS=${MACOS} # entrypoint: "/ragflow/entrypoint_task_executor.sh 1 3" # networks: # - ragflow # restart: on-failure # # https://docs.docker.com/engine/daemon/prometheus/#create-a-prometheus-configuration # # If you're using Docker Desktop, the --add-host flag is optional. This flag makes sure that the host's internal IP gets exposed to the Prometheus container. # extra_hosts: # - "host.docker.internal:host-gateway" networks: ragflow: driver: bridge