{"owner":"xerrors","repo":"Yuxi","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker-compose.prod.yml","servicesCount":13,"services":[{"name":"api","image":"${COMPOSE_PROJECT_NAME:-yuxi}-api:${YUXI_VERSION:-0.7.3}","build":{"context":".","dockerfile":"docker/api.Dockerfile"},"restart":"unless-stopped","command":"uv run --no-sync --no-dev uvicorn server.main:app --host 0.0.0.0 --port 5050","ports":["${YUXI_API_PORT:-6050}:5050"],"environment":["HOST_IP=${HOST_IP:-}","RUNNING_IN_DOCKER=true","YUXI_ENV=production","PYTHONPATH=/app/package","JWT_SECRET_KEY=${JWT_SECRET_KEY:?Set JWT_SECRET_KEY in .env.prod}","API_KEY_DERIVATION_SECRET=${API_KEY_DERIVATION_SECRET:?Set API_KEY_DERIVATION_SECRET in .env.prod}","RAPIDOCR_MODEL_DIR=/home/yuxi/.cache/rapidocr/models","YUXI_INSTANCE_ID=${YUXI_INSTANCE_ID:?Set YUXI_INSTANCE_ID in .env.prod}","POSTGRES_URL=${POSTGRES_URL:-postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env.prod}@postgres:5432/${POSTGRES_DB:-yuxi}}","REDIS_URL=${REDIS_URL:-redis://redis:6379/0}","RUN_CANCEL_KEY_TTL_SECONDS=${RUN_CANCEL_KEY_TTL_SECONDS:-1800}","RUN_EVENTS_STREAM_TTL_SECONDS=${RUN_EVENTS_STREAM_TTL_SECONDS:-7200}","READINESS_PROBE_TIMEOUT_SECONDS=${READINESS_PROBE_TIMEOUT_SECONDS:-2}","READINESS_CACHE_TTL_SECONDS=${READINESS_CACHE_TTL_SECONDS:-1}","YUXI_CORS_ORIGINS=${YUXI_CORS_ORIGINS:-}","NEO4J_URI=${NEO4J_URI:-bolt://graph:7687}","NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:?Set NEO4J_PASSWORD in .env.prod}","MILVUS_URI=${MILVUS_URI:-http://milvus:19530}","MILVUS_TOKEN=${MILVUS_TOKEN:-}","MINERU_API_URI=${MINERU_API_URI:-http://mineru-api:30001}","PADDLEX_URI=${PADDLEX_URI:-http://paddlex:8080}","MINIO_URI=${MINIO_URI:-http://minio:9000}","SANDBOX_PROVIDER=${SANDBOX_PROVIDER:-provisioner}","SANDBOX_PROVISIONER_URL=${SANDBOX_PROVISIONER_URL:-http://sandbox-provisioner:8002}","SANDBOX_PROVISIONER_TOKEN=${SANDBOX_PROVISIONER_TOKEN:?Set SANDBOX_PROVISIONER_TOKEN in .env.prod}","SANDBOX_PROVISIONER_DELETE_TIMEOUT_SECONDS=${SANDBOX_PROVISIONER_DELETE_TIMEOUT_SECONDS:-120}","SANDBOX_VIRTUAL_PATH_PREFIX=${SANDBOX_VIRTUAL_PATH_PREFIX:-/home/gem/user-data}","SANDBOX_EXEC_TIMEOUT_SECONDS=${SANDBOX_EXEC_TIMEOUT_SECONDS:-180}","SANDBOX_MAX_OUTPUT_BYTES=${SANDBOX_MAX_OUTPUT_BYTES:-262144}","TASKER_DEFAULT_TIMEOUT_SECONDS=${TASKER_DEFAULT_TIMEOUT_SECONDS:-21600}","YUXI_DATASET_PERSIST_BATCH_SIZE=${YUXI_DATASET_PERSIST_BATCH_SIZE:-1}","YUXI_SKILL_DATA_DIR=/app/skill-sources","YUXI_SKILL_PROJECTION_DIR=/app/skill-projections","NO_PROXY=localhost,127.0.0.1,milvus,graph,minio,etcd,mineru,paddlex,sandbox-provisioner,api.siliconflow.cn","no_proxy=localhost,127.0.0.1,milvus,graph,minio,etcd,mineru,paddlex,sandbox-provisioner,api.siliconflow.cn","YUXI_RUNTIME_DIR=/app/runtime/api","YUXI_USER_DATA_DIR=/app/user-data","POSTGRES_POOL_SIZE=${API_POSTGRES_POOL_SIZE:-120}","POSTGRES_MAX_OVERFLOW=${API_POSTGRES_MAX_OVERFLOW:-40}","POSTGRES_POOL_TIMEOUT_SECONDS=${API_POSTGRES_POOL_TIMEOUT_SECONDS:-30}","LANGGRAPH_POSTGRES_POOL_SIZE=${API_LANGGRAPH_POSTGRES_POOL_SIZE:-10}","LANGGRAPH_POSTGRES_POOL_TIMEOUT_SECONDS=${API_LANGGRAPH_POSTGRES_POOL_TIMEOUT_SECONDS:-30}","REDIS_MAX_CONNECTIONS=${API_REDIS_MAX_CONNECTIONS:-256}"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/yuxi/threads:/app/user-data","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-sources:/app/skill-sources","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-projections:/app/skill-projections"],"depends_on":["postgres","redis","minio","sandbox-provisioner","storage-migrator"]},{"name":"worker","image":"${COMPOSE_PROJECT_NAME:-yuxi}-api:${YUXI_VERSION:-0.7.3}","build":{"context":".","dockerfile":"docker/api.Dockerfile"},"restart":"unless-stopped","command":"uv run --no-sync --no-dev python -m server.worker_main","environment":["HOST_IP=${HOST_IP:-}","RUNNING_IN_DOCKER=true","YUXI_ENV=production","PYTHONPATH=/app/package","JWT_SECRET_KEY=${JWT_SECRET_KEY:?Set JWT_SECRET_KEY in .env.prod}","API_KEY_DERIVATION_SECRET=${API_KEY_DERIVATION_SECRET:?Set API_KEY_DERIVATION_SECRET in .env.prod}","RAPIDOCR_MODEL_DIR=/home/yuxi/.cache/rapidocr/models","YUXI_INSTANCE_ID=${YUXI_INSTANCE_ID:?Set YUXI_INSTANCE_ID in .env.prod}","POSTGRES_URL=${POSTGRES_URL:-postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env.prod}@postgres:5432/${POSTGRES_DB:-yuxi}}","REDIS_URL=${REDIS_URL:-redis://redis:6379/0}","RUN_CANCEL_KEY_TTL_SECONDS=${RUN_CANCEL_KEY_TTL_SECONDS:-1800}","RUN_EVENTS_STREAM_TTL_SECONDS=${RUN_EVENTS_STREAM_TTL_SECONDS:-7200}","READINESS_PROBE_TIMEOUT_SECONDS=${READINESS_PROBE_TIMEOUT_SECONDS:-2}","READINESS_CACHE_TTL_SECONDS=${READINESS_CACHE_TTL_SECONDS:-1}","YUXI_CORS_ORIGINS=${YUXI_CORS_ORIGINS:-}","NEO4J_URI=${NEO4J_URI:-bolt://graph:7687}","NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:?Set NEO4J_PASSWORD in .env.prod}","MILVUS_URI=${MILVUS_URI:-http://milvus:19530}","MILVUS_TOKEN=${MILVUS_TOKEN:-}","MINERU_API_URI=${MINERU_API_URI:-http://mineru-api:30001}","PADDLEX_URI=${PADDLEX_URI:-http://paddlex:8080}","MINIO_URI=${MINIO_URI:-http://minio:9000}","SANDBOX_PROVIDER=${SANDBOX_PROVIDER:-provisioner}","SANDBOX_PROVISIONER_URL=${SANDBOX_PROVISIONER_URL:-http://sandbox-provisioner:8002}","SANDBOX_PROVISIONER_TOKEN=${SANDBOX_PROVISIONER_TOKEN:?Set SANDBOX_PROVISIONER_TOKEN in .env.prod}","SANDBOX_PROVISIONER_DELETE_TIMEOUT_SECONDS=${SANDBOX_PROVISIONER_DELETE_TIMEOUT_SECONDS:-120}","SANDBOX_VIRTUAL_PATH_PREFIX=${SANDBOX_VIRTUAL_PATH_PREFIX:-/home/gem/user-data}","SANDBOX_EXEC_TIMEOUT_SECONDS=${SANDBOX_EXEC_TIMEOUT_SECONDS:-180}","SANDBOX_MAX_OUTPUT_BYTES=${SANDBOX_MAX_OUTPUT_BYTES:-262144}","TASKER_DEFAULT_TIMEOUT_SECONDS=${TASKER_DEFAULT_TIMEOUT_SECONDS:-21600}","YUXI_DATASET_PERSIST_BATCH_SIZE=${YUXI_DATASET_PERSIST_BATCH_SIZE:-1}","YUXI_SKILL_DATA_DIR=/app/skill-sources","YUXI_SKILL_PROJECTION_DIR=/app/skill-projections","NO_PROXY=localhost,127.0.0.1,milvus,graph,minio,etcd,mineru,paddlex,sandbox-provisioner,api.siliconflow.cn","no_proxy=localhost,127.0.0.1,milvus,graph,minio,etcd,mineru,paddlex,sandbox-provisioner,api.siliconflow.cn","YUXI_RUNTIME_DIR=/app/runtime/worker","YUXI_USER_DATA_DIR=/app/user-data","ARQ_MAX_JOBS=${ARQ_MAX_JOBS:-140}","REDIS_MAX_CONNECTIONS=${WORKER_REDIS_MAX_CONNECTIONS:-256}","POSTGRES_POOL_SIZE=${WORKER_POSTGRES_POOL_SIZE:-120}","POSTGRES_MAX_OVERFLOW=${WORKER_POSTGRES_MAX_OVERFLOW:-40}","POSTGRES_POOL_TIMEOUT_SECONDS=${WORKER_POSTGRES_POOL_TIMEOUT_SECONDS:-30}","LANGGRAPH_POSTGRES_POOL_SIZE=${WORKER_LANGGRAPH_POSTGRES_POOL_SIZE:-120}","LANGGRAPH_POSTGRES_POOL_TIMEOUT_SECONDS=${WORKER_LANGGRAPH_POSTGRES_POOL_TIMEOUT_SECONDS:-30}"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/yuxi/threads:/app/user-data","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-sources:/app/skill-sources","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-projections:/app/skill-projections"],"depends_on":["postgres","redis","minio","sandbox-provisioner","storage-migrator"]},{"name":"storage-migrator","image":"${COMPOSE_PROJECT_NAME:-yuxi}-api:${YUXI_VERSION:-0.7.3}","build":{"context":".","dockerfile":"docker/api.Dockerfile"},"restart":"no","command":"uv run --no-sync --no-dev python -m yuxi.storage_migration","environment":["HOST_IP=${HOST_IP:-}","RUNNING_IN_DOCKER=true","YUXI_ENV=production","PYTHONPATH=/app/package","JWT_SECRET_KEY=${JWT_SECRET_KEY:?Set JWT_SECRET_KEY in .env.prod}","API_KEY_DERIVATION_SECRET=${API_KEY_DERIVATION_SECRET:?Set API_KEY_DERIVATION_SECRET in .env.prod}","RAPIDOCR_MODEL_DIR=/home/yuxi/.cache/rapidocr/models","YUXI_INSTANCE_ID=${YUXI_INSTANCE_ID:?Set YUXI_INSTANCE_ID in .env.prod}","POSTGRES_URL=${POSTGRES_URL:-postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env.prod}@postgres:5432/${POSTGRES_DB:-yuxi}}","REDIS_URL=${REDIS_URL:-redis://redis:6379/0}","RUN_CANCEL_KEY_TTL_SECONDS=${RUN_CANCEL_KEY_TTL_SECONDS:-1800}","RUN_EVENTS_STREAM_TTL_SECONDS=${RUN_EVENTS_STREAM_TTL_SECONDS:-7200}","READINESS_PROBE_TIMEOUT_SECONDS=${READINESS_PROBE_TIMEOUT_SECONDS:-2}","READINESS_CACHE_TTL_SECONDS=${READINESS_CACHE_TTL_SECONDS:-1}","YUXI_CORS_ORIGINS=${YUXI_CORS_ORIGINS:-}","NEO4J_URI=${NEO4J_URI:-bolt://graph:7687}","NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:?Set NEO4J_PASSWORD in .env.prod}","MILVUS_URI=${MILVUS_URI:-http://milvus:19530}","MILVUS_TOKEN=${MILVUS_TOKEN:-}","MINERU_API_URI=${MINERU_API_URI:-http://mineru-api:30001}","PADDLEX_URI=${PADDLEX_URI:-http://paddlex:8080}","MINIO_URI=${MINIO_URI:-http://minio:9000}","SANDBOX_PROVIDER=${SANDBOX_PROVIDER:-provisioner}","SANDBOX_PROVISIONER_URL=${SANDBOX_PROVISIONER_URL:-http://sandbox-provisioner:8002}","SANDBOX_PROVISIONER_TOKEN=${SANDBOX_PROVISIONER_TOKEN:?Set SANDBOX_PROVISIONER_TOKEN in .env.prod}","SANDBOX_PROVISIONER_DELETE_TIMEOUT_SECONDS=${SANDBOX_PROVISIONER_DELETE_TIMEOUT_SECONDS:-120}","SANDBOX_VIRTUAL_PATH_PREFIX=${SANDBOX_VIRTUAL_PATH_PREFIX:-/home/gem/user-data}","SANDBOX_EXEC_TIMEOUT_SECONDS=${SANDBOX_EXEC_TIMEOUT_SECONDS:-180}","SANDBOX_MAX_OUTPUT_BYTES=${SANDBOX_MAX_OUTPUT_BYTES:-262144}","TASKER_DEFAULT_TIMEOUT_SECONDS=${TASKER_DEFAULT_TIMEOUT_SECONDS:-21600}","YUXI_DATASET_PERSIST_BATCH_SIZE=${YUXI_DATASET_PERSIST_BATCH_SIZE:-1}","YUXI_SKILL_DATA_DIR=/app/skill-sources","YUXI_SKILL_PROJECTION_DIR=/app/skill-projections","NO_PROXY=localhost,127.0.0.1,milvus,graph,minio,etcd,mineru,paddlex,sandbox-provisioner,api.siliconflow.cn","no_proxy=localhost,127.0.0.1,milvus,graph,minio,etcd,mineru,paddlex,sandbox-provisioner,api.siliconflow.cn","YUXI_RUNTIME_DIR=/app/runtime/storage-migrator","YUXI_LEGACY_STORAGE_DIR=/app/legacy-saves","YUXI_USER_DATA_DIR=/app/user-data"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/yuxi:/app/legacy-saves","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/threads:/app/user-data","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-sources:/app/skill-sources","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-projections:/app/skill-projections"],"depends_on":["postgres"]},{"name":"sandbox-provisioner","image":"${COMPOSE_PROJECT_NAME:-yuxi}-sandbox-provisioner:${YUXI_VERSION:-0.7.3}","build":{"context":"./docker/sandbox_provisioner","dockerfile":"Dockerfile"},"restart":"unless-stopped","command":"uvicorn app:app --host 0.0.0.0 --port 8002","ports":["127.0.0.1:${YUXI_SANDBOX_PORT:-9002}:8002"],"environment":["PROVISIONER_BACKEND=${SANDBOX_PROVISIONER_BACKEND:-docker}","PROVISIONER_PUBLIC_URL=${SANDBOX_PROVISIONER_URL:-http://sandbox-provisioner:8002}","SANDBOX_PROVISIONER_TOKEN=${SANDBOX_PROVISIONER_TOKEN:?Set SANDBOX_PROVISIONER_TOKEN in .env.prod}","SANDBOX_IMAGE=${SANDBOX_IMAGE:-enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:1.11.0}","SANDBOX_RUNTIME_PROFILE=${SANDBOX_RUNTIME_PROFILE:-core}","SANDBOX_CONTAINER_PORT=${SANDBOX_CONTAINER_PORT:-8080}","MEMORY_SANDBOX_URL_TEMPLATE=${MEMORY_SANDBOX_URL_TEMPLATE:-http://agent-sandbox:8000}","SANDBOX_HEALTH_TIMEOUT_SECONDS=${SANDBOX_HEALTH_TIMEOUT_SECONDS:-300}","SANDBOX_IDLE_TIMEOUT_SECONDS=${SANDBOX_IDLE_TIMEOUT_SECONDS:-120}","SANDBOX_IDLE_CHECK_INTERVAL_SECONDS=${SANDBOX_IDLE_CHECK_INTERVAL_SECONDS:-10}","SANDBOX_EXEC_TIMEOUT_SECONDS=${SANDBOX_EXEC_TIMEOUT_SECONDS:-180}","SANDBOX_DELETE_CONCURRENCY=${SANDBOX_DELETE_CONCURRENCY:-32}","SANDBOX_CONTAINER_STOP_TIMEOUT_SECONDS=${SANDBOX_CONTAINER_STOP_TIMEOUT_SECONDS:-2}","SANDBOX_MEM_LIMIT=${SANDBOX_MEM_LIMIT:-2g}","SANDBOX_CPUS=${SANDBOX_CPUS:-2}","SANDBOX_PIDS_LIMIT=${SANDBOX_PIDS_LIMIT:-512}","HTTP_PROXY=${SANDBOX_HTTP_PROXY:-}","HTTPS_PROXY=${SANDBOX_HTTPS_PROXY:-}","NO_PROXY=localhost,127.0.0.1,host.docker.internal","DOCKER_NETWORK_PREFIX=${SANDBOX_DOCKER_NETWORK_PREFIX:-${COMPOSE_PROJECT_NAME:-yuxi}-sandbox}","DOCKER_ADDRESS_POOL=${SANDBOX_DOCKER_ADDRESS_POOL:-10.253.240.0/20}","DOCKER_SUBNET_PREFIX=${SANDBOX_DOCKER_SUBNET_PREFIX:-28}","DOCKER_USER_DATA_HOST_PATH=${SANDBOX_DOCKER_USER_DATA_HOST_PATH:-}","DOCKER_SKILL_PROJECTIONS_HOST_PATH=${SANDBOX_DOCKER_SKILL_PROJECTIONS_HOST_PATH:-}","DOCKER_SANDBOX_PREFIX=${SANDBOX_DOCKER_SANDBOX_PREFIX:-${COMPOSE_PROJECT_NAME:-yuxi}-sandbox}","K8S_NAMESPACE=${SANDBOX_K8S_NAMESPACE:-yuxi-know}","NODE_HOST=${SANDBOX_NODE_HOST:-host.docker.internal}","KUBECONFIG_PATH=${KUBECONFIG_PATH:-}","USER_DATA_PVC=${USER_DATA_PVC:-yuxi-user-data}","SKILLS_PVC=${SKILLS_PVC:-yuxi-skills}"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/yuxi/threads:/app/user-data","${YUXI_STATE_DIR:-./docker/volumes}/yuxi/skill-projections:/app/skill-projections","${SANDBOX_ENV_FILE:-./docker/sandbox_provisioner/sandbox.env}:/app/sandbox.env:ro","/var/run/docker.sock:/var/run/docker.sock"],"depends_on":["storage-migrator"]},{"name":"web","image":"${COMPOSE_PROJECT_NAME:-yuxi}-web:${YUXI_VERSION:-0.7.3}","build":{"context":".","dockerfile":"docker/web.Dockerfile"},"restart":"unless-stopped","command":"nginx -g \"daemon off;\"","ports":["${YUXI_WEB_PORT:-80}:80"],"environment":["NODE_ENV=production"],"depends_on":["api"]},{"name":"graph","image":"neo4j:5.26.29","restart":"unless-stopped","ports":["127.0.0.1:${YUXI_NEO4J_HTTP_PORT:-8474}:7474","127.0.0.1:${YUXI_NEO4J_BOLT_PORT:-8687}:7687"],"environment":["NEO4J_AUTH=${NEO4J_USERNAME:-neo4j}/${NEO4J_PASSWORD:?Set NEO4J_PASSWORD in .env.prod}","NEO4J_server_bolt_listen__address=0.0.0.0:7687","NEO4J_server_http_listen__address=0.0.0.0:7474","ENTITY_EMBEDDING=true"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/neo4j/data:/data","${YUXI_STATE_DIR:-./docker/volumes}/neo4j/logs:/logs"]},{"name":"etcd","image":"quay.io/coreos/etcd:v3.5.5","restart":"unless-stopped","command":"etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd","environment":["ETCD_AUTO_COMPACTION_MODE=revision","ETCD_AUTO_COMPACTION_RETENTION=1000","ETCD_QUOTA_BACKEND_BYTES=4294967296","ETCD_SNAPSHOT_COUNT=50000"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/milvus/etcd:/etcd"]},{"name":"minio","image":"${COMPOSE_PROJECT_NAME:-yuxi}-minio:RELEASE.2023-03-20T20-16-18Z","build":{"context":"./docker/minio","dockerfile":"Dockerfile"},"restart":"unless-stopped","command":"minio server /data --address 0.0.0.0:9000 --console-address 0.0.0.0:9001","ports":["127.0.0.1:${YUXI_MINIO_API_PORT:-10000}:9000","127.0.0.1:${YUXI_MINIO_CONSOLE_PORT:-10001}:9001"],"environment":["MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:?Set MINIO_ACCESS_KEY in .env.prod}","MINIO_SECRET_KEY=${MINIO_SECRET_KEY:?Set MINIO_SECRET_KEY in .env.prod}"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/milvus/minio:/data","${YUXI_STATE_DIR:-./docker/volumes}/milvus/minio_config:/root/.minio"]},{"name":"milvus","image":"milvusdb/milvus:v2.5.6","restart":"unless-stopped","command":"milvus run standalone","ports":["127.0.0.1:${YUXI_MILVUS_PORT:-20530}:19530","127.0.0.1:${YUXI_MILVUS_HEALTH_PORT:-10091}:9091"],"environment":["ETCD_ENDPOINTS=etcd:2379","MINIO_ADDRESS=minio:9000","MINIO_ACCESS_KEY_ID=${MINIO_ACCESS_KEY:?Set MINIO_ACCESS_KEY in .env.prod}","MINIO_SECRET_ACCESS_KEY=${MINIO_SECRET_KEY:?Set MINIO_SECRET_KEY in .env.prod}"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/milvus/milvus:/var/lib/milvus","${YUXI_STATE_DIR:-./docker/volumes}/milvus/logs:/var/lib/milvus/logs"],"depends_on":["etcd","minio"]},{"name":"postgres","image":"postgres:16","restart":"unless-stopped","command":"postgres -c max_connections=${POSTGRES_MAX_CONNECTIONS:-600}","ports":["127.0.0.1:${YUXI_POSTGRES_PORT:-6432}:5432"],"environment":["POSTGRES_USER=${POSTGRES_USER:-postgres}","POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env.prod}","POSTGRES_DB=${POSTGRES_DB:-yuxi}","TZ=${TZ:-Asia/Shanghai}"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/postgresql:/var/lib/postgresql/data"]},{"name":"redis","image":"redis:7.4.10-alpine","restart":"unless-stopped","command":"redis-server --appendonly yes","ports":["127.0.0.1:${YUXI_REDIS_PORT:-7379}:6379"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/redis:/data"]},{"name":"mineru-api","image":"${COMPOSE_PROJECT_NAME:-yuxi}-mineru:latest","build":{"context":".","dockerfile":"docker/mineru.Dockerfile"},"restart":"unless-stopped","command":"--host 0.0.0.0 --port 30001","ports":["127.0.0.1:${YUXI_MINERU_PORT:-30001}:30001"],"environment":["MINERU_MODEL_SOURCE=local"]},{"name":"paddlex","image":"${COMPOSE_PROJECT_NAME:-yuxi}-paddlex:latest","build":{"context":".","dockerfile":"docker/paddlex.Dockerfile"},"restart":"unless-stopped","ports":["127.0.0.1:${YUXI_PADDLEX_PORT:-8080}:8080"],"volumes":["${YUXI_STATE_DIR:-./docker/volumes}/paddlex:/paddlex"]}],"exposedPorts":["6050","9002","80","8474","8687","10000","10001","20530","10091","6432","7379","30001","8080"],"dockerRunCommand":"docker run -d --name yuxi -p 6050:6050 --restart always neo4j:5.26.29","podmanRunCommand":"podman run -d --name yuxi -p 6050:6050 --restart always neo4j:5.26.29","skopeoInspectCommand":"skopeo inspect docker://docker.io/library/neo4j:5.26.29","orasPullCommand":"oras pull neo4j:5.26.29","registryMeta":{"provider":"dockerhub","image":"library/neo4j","canonicalImage":"docker.io/library/neo4j:5.26.29","latestTag":"5.26.29","cliCommands":{"dockerRun":"docker run -d --name yuxi -p 6050:6050 --restart always neo4j:5.26.29","dockerPull":"docker pull neo4j:5.26.29","podmanRun":"podman run -d --name yuxi -p 6050:6050 --restart always neo4j:5.26.29","skopeoInspect":"skopeo inspect docker://docker.io/library/neo4j:5.26.29","orasPull":"oras pull neo4j:5.26.29","composeYaml":"services:\n  yuxi:\n    image: neo4j:5.26.29\n    restart: unless-stopped\n    ports:\n      - \"6050:6050\""}}}