version: '2.2' services: es01: container_name: ragflow-es-01 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - esdata01:/usr/share/elasticsearch/data ports: - ${ES_PORT}:9200 environment: - node.name=es01 - cluster.name=${CLUSTER_NAME} - cluster.initial_master_nodes=es01 - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - bootstrap.memory_lock=false - xpack.security.enabled=false - 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: always kibana: depends_on: es01: condition: service_healthy image: docker.elastic.co/kibana/kibana:${STACK_VERSION} container_name: ragflow-kibana volumes: - kibanadata:/usr/share/kibana/data ports: - ${KIBANA_PORT}:5601 environment: - SERVERNAME=kibana - ELASTICSEARCH_HOSTS=http://es01:9200 - TZ=${TIMEZONE} mem_limit: ${MEM_LIMIT} networks: - ragflow mysql: image: mysql:5.7.18 container_name: ragflow-mysql environment: - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - TZ=${TIMEZONE} command: --max_connections=1000 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --default-authentication-plugin=mysql_native_password --tls_version="TLSv1.2,TLSv1.3" --init-file /data/application/init.sql 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: always minio: image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z container_name: ragflow-minio command: server --console-address ":9001" /data ports: - 9000:9000 - 9001:9001 environment: - MINIO_ROOT_USER=${MINIO_USER} - MINIO_ROOT_PASSWORD=${MINIO_PASSWORD} - TZ=${TIMEZONE} volumes: - minio_data:/data networks: - ragflow restart: always ragflow: depends_on: mysql: condition: service_healthy es01: condition: service_healthy image: infiniflow/ragflow:v1.0 container_name: ragflow-server ports: - ${SVR_HTTP_PORT}:9380 - 80:80 - 443:443 volumes: - ./service_conf.yaml:/ragflow/conf/service_conf.yaml - ./ragflow-logs:/ragflow/logs - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf - ./nginx/proxy.conf:/etc/nginx/proxy.conf - ./nginx/nginx.conf:/etc/nginx/nginx.conf environment: - TZ=${TIMEZONE} networks: - ragflow restart: always volumes: esdata01: driver: local kibanadata: driver: local mysql_data: driver: local minio_data: driver: local networks: ragflow: driver: bridge