ForcePilot/docker-compose.yml

264 lines
7.5 KiB
YAML
Raw Normal View History

2024-10-08 22:16:17 +08:00
services:
api:
build:
2025-04-28 22:53:13 +08:00
context: .
2024-10-08 22:16:17 +08:00
dockerfile: docker/api.Dockerfile
image: yuxi-api:0.2.0.dev
2024-10-08 22:16:17 +08:00
container_name: api-dev
working_dir: /app
volumes:
2025-04-28 22:53:13 +08:00
- ./server:/app/server
- ./src:/app/src
2025-04-29 00:04:40 +08:00
- ./saves:/app/saves
- ./test:/app/test
- ${MODEL_DIR:-./models}:/models # 使用默认值处理未定义的环境变量
2024-10-08 22:16:17 +08:00
ports:
- "5050:5050"
2024-10-08 22:16:17 +08:00
networks:
- app-network
2025-02-28 14:39:03 +08:00
extra_hosts:
- "host.docker.internal:host-gateway"
env_file:
- src/.env
2024-10-08 22:16:17 +08:00
environment:
- NEO4J_URI=${NEO4J_URI:-bolt://graph:7687}
- NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-0123456789}
- MILVUS_URI=${MILVUS_URI:-http://milvus:19530}
- MILVUS_TOKEN=${MILVUS_TOKEN:-}
- MINERU_OCR_URI=${MINERU_OCR_URI:-http://mineru:30000}
- PADDLEX_URI=${PADDLEX_URI:-http://paddlex-ocr:8080}
- MINIO_URI=${MINIO_URI:-http://milvus-minio:9000}
- MODEL_DIR=/models
2025-02-28 14:39:03 +08:00
- RUNNING_IN_DOCKER=true
- NO_PROXY=localhost,127.0.0.1,milvus,graph,milvus-minio,milvus-etcd-dev,etcd,minio
- no_proxy=localhost,127.0.0.1,milvus,graph,milvus-minio,milvus-etcd-dev,etcd,minio
command: uv run uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload
restart: unless-stopped
healthcheck:
2025-07-22 17:29:38 +08:00
test: ["CMD-SHELL", "curl -f http://localhost:5050/api/system/health || exit 1"]
interval: 30s
timeout: 15s
retries: 8
start_period: 180s
depends_on:
# postgres:
# condition: service_healthy
milvus:
condition: service_healthy
minio:
condition: service_healthy
2024-10-08 22:16:17 +08:00
web:
build:
2025-04-28 22:53:13 +08:00
context: .
2024-10-08 22:16:17 +08:00
dockerfile: docker/web.Dockerfile
target: development
image: yuxi-web:0.2.0.dev
2024-10-08 22:16:17 +08:00
container_name: web-dev
volumes:
2025-04-28 22:53:13 +08:00
- ./web:/app
2024-10-08 22:16:17 +08:00
- /app/node_modules
ports:
- "5173:5173"
depends_on:
- api
networks:
- app-network
environment:
- NODE_ENV=development
- VITE_API_URL=http://api:5050
2025-04-28 22:53:13 +08:00
command: pnpm run server
restart: unless-stopped
2024-10-08 22:16:17 +08:00
# PostgreSQL 服务 - 基于官方推荐的 shangor/postgres-for-rag 镜像
# 提供 KV store, VectorDB (pgvector) 和 GraphDB (Apache AGE) 功能
# postgres:
# image: shangor/postgres-for-rag:v1.0
# container_name: postgres-lightrag
# environment:
# - POSTGRES_DATABASE=${POSTGRES_DATABASE:-lightrag}
# - POSTGRES_USER=${POSTGRES_USER:-lightrag}
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-lightrag}
# - POSTGRES_HOST_AUTH_METHOD=md5
# # 启用必要的扩展
# - POSTGRES_INITDB_ARGS=--auth-host=md5
# volumes:
# - ./docker/volumes/postgres/data:/var/lib/postgresql/data
# - ./docker/init-postgres.sh:/init-postgres.sh
# ports:
# - "5432:5432"
# healthcheck:
# test: ["CMD-SHELL", "PGPASSWORD=${POSTGRES_PASSWORD:-lightrag} psql -h localhost -U ${POSTGRES_USER:-lightrag} -d ${POSTGRES_DATABASE:-lightrag} -c \"SELECT ag_catalog.create_graph('test_ready');\" || PGPASSWORD=${POSTGRES_PASSWORD:-lightrag} psql -h localhost -U ${POSTGRES_USER:-lightrag} -d ${POSTGRES_DATABASE:-lightrag} -c 'SELECT 1'"]
# interval: 30s
# timeout: 15s
# retries: 15
# start_period: 120s
# networks:
# - app-network
# restart: unless-stopped
# command: ["bash", "/init-postgres.sh"]
2024-10-08 22:16:17 +08:00
graph:
2025-04-28 16:47:26 +08:00
image: neo4j:5.26
container_name: graph
2024-10-08 22:16:17 +08:00
ports:
- "7474:7474"
- "7687:7687"
volumes:
- ./docker/volumes/neo4j/data:/data
- ./docker/volumes/neo4j/logs:/var/lib/neo4j/logs
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:7474 || exit 1"]
interval: 20s
timeout: 10s
retries: 5
start_period: 30s
2024-10-08 22:16:17 +08:00
environment:
- NEO4J_AUTH=${NEO4J_USERNAME:-neo4j}/${NEO4J_PASSWORD:-0123456789}
2024-10-08 22:16:17 +08:00
- NEO4J_server_bolt_listen__address=0.0.0.0:7687
- NEO4J_server_http_listen__address=0.0.0.0:7474
- ENTITY_EMBEDDING=true
2024-10-08 22:16:17 +08:00
networks:
- app-network
restart: unless-stopped
2024-10-08 22:16:17 +08:00
etcd:
container_name: milvus-etcd-dev
image: quay.io/coreos/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ./docker/volumes/milvus/etcd:/etcd
2024-10-08 22:16:17 +08:00
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 60s
timeout: 30s
retries: 5
start_period: 30s
2024-10-08 22:16:17 +08:00
networks:
- app-network
restart: unless-stopped
2024-10-08 22:16:17 +08:00
minio:
container_name: milvus-minio
2024-10-08 22:16:17 +08:00
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
2024-10-08 22:16:17 +08:00
volumes:
- ./docker/volumes/milvus/minio:/minio_data
- ./docker/volumes/milvus/minio_config:/root/.minio
command: minio server /minio_data --address 0.0.0.0:9000 --console-address 0.0.0.0:9001
2024-10-08 22:16:17 +08:00
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 60s
timeout: 30s
retries: 5
start_period: 30s
ports:
- "9000:9000"
- "9001:9001"
2024-10-08 22:16:17 +08:00
networks:
- app-network
restart: unless-stopped
2024-10-08 22:16:17 +08:00
milvus:
2025-04-28 16:40:03 +08:00
image: milvusdb/milvus:v2.5.6
container_name: milvus
2024-10-08 22:16:17 +08:00
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
MILVUS_LOG_LEVEL: error
2024-10-08 22:16:17 +08:00
volumes:
- ./docker/volumes/milvus/milvus:/var/lib/milvus
- ./docker/volumes/milvus/logs:/var/lib/milvus/logs
2024-10-08 22:16:17 +08:00
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 60s
start_period: 120s
timeout: 30s
retries: 5
2024-10-08 22:16:17 +08:00
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
- "minio"
networks:
- app-network
restart: unless-stopped
# lastest version: wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/compose.yaml
mineru:
build:
context: .
dockerfile: docker/mineru.Dockerfile
image: mineru-sglang:latest
container_name: mineru
profiles:
- all
ports:
- 30000:30000
environment:
MINERU_MODEL_SOURCE: modelscope
entrypoint: mineru-sglang-server
command:
--host 0.0.0.0
--port 30000
ulimits:
memlock: -1
stack: 67108864
ipc: host
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:30000/health || exit 1"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ["1"]
capabilities: [gpu]
networks:
- app-network
restart: unless-stopped
paddlex:
build:
context: .
dockerfile: docker/paddlex.Dockerfile
image: paddlex:latest
container_name: paddlex-ocr
profiles:
- all
volumes:
- ./docker/volumes/paddlex:/paddlex
ports:
- "8080:8080"
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8080/ || exit 1"]
interval: 20s
timeout: 10s
retries: 5
start_period: 60s
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0']
capabilities: [gpu]
networks:
- app-network
restart: unless-stopped
2025-06-17 10:54:45 +08:00
2024-10-08 22:16:17 +08:00
networks:
app-network:
2024-10-23 16:24:09 +08:00
driver: bridge