- services:
 -   es01:
 -     container_name: ragflow-es-01
 -     profiles:
 -       - elasticsearch
 -     image: elasticsearch:${STACK_VERSION}
 -     volumes:
 -       - 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
 - 
 -   opensearch01:
 -     container_name: ragflow-opensearch-01
 -     profiles:
 -       - opensearch
 -     image: hub.icert.top/opensearchproject/opensearch:2.19.1
 -     volumes:
 -       - osdata01:/usr/share/opensearch/data
 -     ports:
 -       - ${OS_PORT}:9201
 -     env_file: .env
 -     environment:
 -       - node.name=opensearch01
 -       - OPENSEARCH_PASSWORD=${OPENSEARCH_PASSWORD}
 -       - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_PASSWORD}
 -       - bootstrap.memory_lock=false
 -       - discovery.type=single-node
 -       - plugins.security.disabled=false
 -       - plugins.security.ssl.http.enabled=false
 -       - plugins.security.ssl.transport.enabled=true
 -       - cluster.routing.allocation.disk.watermark.low=5gb
 -       - cluster.routing.allocation.disk.watermark.high=3gb
 -       - cluster.routing.allocation.disk.watermark.flood_stage=2gb
 -       - TZ=${TIMEZONE}
 -       - http.port=9201
 -     mem_limit: ${MEM_LIMIT}
 -     ulimits:
 -       memlock:
 -         soft: -1
 -         hard: -1
 -     healthcheck:
 -       test: ["CMD-SHELL", "curl http://localhost:9201"]
 -       interval: 10s
 -       timeout: 10s
 -       retries: 120
 -     networks:
 -       - ragflow
 -     restart: on-failure
 - 
 -   infinity:
 -     container_name: ragflow-infinity
 -     profiles:
 -       - infinity
 -     image: infiniflow/infinity:v0.6.0-dev3
 -     volumes:
 -       - infinity_data:/var/infinity
 -       - ./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
 - 
 -   sandbox-executor-manager:
 -     container_name: ragflow-sandbox-executor-manager
 -     profiles:
 -       - sandbox
 -     image: ${SANDBOX_EXECUTOR_MANAGER_IMAGE-infiniflow/sandbox-executor-manager:latest}
 -     privileged: true
 -     ports:
 -       - ${SANDBOX_EXECUTOR_MANAGER_PORT-9385}:9385
 -     env_file: .env
 -     volumes:
 -       - /var/run/docker.sock:/var/run/docker.sock
 -     networks:
 -       - ragflow
 -     security_opt:
 -       - no-new-privileges:true
 -     environment:
 -       - TZ=${TIMEZONE}
 -       - SANDBOX_EXECUTOR_MANAGER_POOL_SIZE=${SANDBOX_EXECUTOR_MANAGER_POOL_SIZE:-3}
 -       - SANDBOX_BASE_PYTHON_IMAGE=${SANDBOX_BASE_PYTHON_IMAGE:-infiniflow/sandbox-base-python:latest}
 -       - SANDBOX_BASE_NODEJS_IMAGE=${SANDBOX_BASE_NODEJS_IMAGE:-infiniflow/sandbox-base-nodejs:latest}
 -       - SANDBOX_ENABLE_SECCOMP=${SANDBOX_ENABLE_SECCOMP:-false}
 -       - SANDBOX_MAX_MEMORY=${SANDBOX_MAX_MEMORY:-256m}
 -       - SANDBOX_TIMEOUT=${SANDBOX_TIMEOUT:-10s}
 -     healthcheck:
 -       test: ["CMD", "curl", "http://localhost:9385/healthz"]
 -       interval: 10s
 -       timeout: 5s
 -       retries: 5
 -     restart: on-failure
 - 
 -   mysql:
 -     # mysql:5.7 linux/arm64 image is unavailable.
 -     image: 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
 -       --binlog_expire_logs_seconds=604800
 -     ports:
 -       - ${MYSQL_PORT}:3306
 -     volumes:
 -       - mysql_data:/var/lib/mysql
 -       - ./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: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z
 -     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:
 -       - minio_data:/data
 -     networks:
 -       - ragflow
 -     restart: on-failure
 -     healthcheck:
 -       test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
 -       interval: 30s
 -       timeout: 20s
 -       retries: 3
 - 
 -   redis:
 -     # swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/valkey/valkey:8
 -     image: 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:
 -       - redis_data:/data
 -     networks:
 -       - ragflow
 -     restart: on-failure
 -     healthcheck:
 -       test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
 -       interval: 5s
 -       timeout: 3s
 -       retries: 3
 -       start_period: 10s    
 - 
 - 
 - 
 - volumes:
 -   esdata01:
 -     driver: local
 -   osdata01:
 -     driver: local
 -   infinity_data:
 -     driver: local
 -   mysql_data:
 -     driver: local
 -   minio_data:
 -     driver: local
 -   redis_data:
 -     driver: local
 - 
 - networks:
 -   ragflow:
 -     driver: bridge
 
 
  |