services: powerrag: depends_on: oceanbase: condition: service_healthy image: ${POWERRAG_IMAGE} command: - --enable-adminserver ports: - ${SVR_WEB_HTTP_PORT}:80 - ${SVR_WEB_HTTPS_PORT}:443 - ${SVR_HTTP_PORT}:9380 - ${ADMIN_SVR_HTTP_PORT}:9381 - ${SVR_MCP_PORT}:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above. - ${POWERRAG_SVR_HTTP_PORT:-6000}:6000 # entry for PowerRAG server (host_port:docker_port). The docker_port must match the value you set for `powerrag-port` above. volumes: - ./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 - ../history_data_agent:/ragflow/history_data_agent - ./service_conf.yaml.template:/ragflow/conf/service_conf.yaml.template - ./entrypoint.sh:/ragflow/entrypoint.sh env_file: .env networks: - powerrag restart: on-failure healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:9380/v1/system/healthz && curl -f http://localhost:6000/health"] interval: 10s timeout: 15s retries: 30 start_period: 300s # https://docs.docker.com/engine/daemon/prometheus/#create-a-prometheus-configuration # If you use Docker Desktop, the --add-host flag is optional. This flag ensures that the host's internal IP is exposed to the Prometheus container. extra_hosts: - "host.docker.internal:host-gateway" oceanbase: image: oceanbase/seekdb:1.0.0.0-100000262025111218 profiles: - oceanbase ports: - ${EXPOSE_OB_PORT:-2881}:2881 env_file: .env environment: - INIT_SCRIPTS_PATH=/root/boot/init.d volumes: - ./oceanbase/data:/var/lib/oceanbase - ./oceanbase/init.d:/root/boot/init.d networks: - powerrag restart: on-failure healthcheck: test: [ 'CMD-SHELL', 'mysql -h127.0.0.1 -P2881 -uroot -p${ROOT_PASSWORD:-powerrag} -e "CREATE DATABASE IF NOT EXISTS ${OCEANBASE_META_DBNAME:-powerrag}; CREATE DATABASE IF NOT EXISTS ${OCEANBASE_DOC_DBNAME:-powerrag_doc};"' ] interval: 10s retries: 30 start_period: 30s timeout: 10s # Gotenberg service for document conversion gotenberg: image: gotenberg/gotenberg:8 env_file: .env environment: - CHROMIUM_DISABLE_SANDBOX=true - LIBREOFFICE_DISABLE_SANDBOX=true - API_TIMEOUT=60s - LOG_LEVEL=info deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '1' memory: 1G restart: unless-stopped healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:3000/health" ] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - powerrag networks: powerrag: driver: bridge