x-kong-config: &kong-env KONG_DATABASE: postgres KONG_PG_HOST: postgres KONG_PG_DATABASE: kong KONG_PG_USER: postgres KONG_PG_PASSWORD: 123456 services: fastapi2: build: # 在本文件所在目录运行构建 docker compose build --no-cache context: ../../ dockerfile: ./bbit_ai/docker/Dockerfiledev # 开发版 Dockerfile container_name: fastapi-dev ports: - "13011:13011" volumes: # 在本文件所在目录运行 - ../../bbit_ai/app:/app # 挂载本地代码,实现热更新 - ../../bbit_ai/docker/:/root/.local/pyzxing # 挂载 jar networks: - ce_network # ---------- PostgreSQL ---------- postgres: container_name: ce_postgres image: postgres:15-alpine environment: POSTGRES_DB: ktor # 实际上这里已经没用了,因为卷已经创建了,现在在用ktor2、kong两个数据库 POSTGRES_USER: postgres POSTGRES_PASSWORD: 123456 POSTGRES_HOST_AUTH_METHOD: trust ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data networks: - ce_network restart: unless-stopped # ---------- Redis ---------- redis: container_name: ce_redis image: redis:7.2.3-alpine command: [ "redis-server", "--save", "60", "100", "--appendonly", "yes", ] volumes: - redis_data:/data ports: - "6379:6379" networks: - ce_network restart: unless-stopped # ---------- ETCD ---------- etcd: container_name: ce_etcd image: quay.io/coreos/etcd:v3.5.18 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 networks: - ce_network volumes: - etcd_data:/data/etcd command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /data/etcd healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 restart: unless-stopped # ---------- Milvus ---------- milvus: container_name: ce_milvus image: milvusdb/milvus:v2.6.1 command: ["milvus", "run", "standalone"] security_opt: - seccomp:unconfined environment: ETCD_ENDPOINTS: etcd:2379 MQ_TYPE: woodpecker MINIO_ADDRESS: ai.ronsunny.cn:9000 MINIO_BUCKET_NAME: a-bucket-dev MINIO_USE_SSL: true MINIO_ACCESS_KEY_ID: minioadmin MINIO_SECRET_ACCESS_KEY: minioadmin MINIO_REGION: Chengdu networks: - ce_network volumes: - milvus_data:/var/lib/milvus # - ./config/milvus/milvus.yaml:/milvus/configs/milvus.yaml healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 30s start_period: 90s timeout: 20s retries: 3 ports: - "19530:19530" # 服务用 - "9091:9091" # GUI用 depends_on: - etcd restart: unless-stopped # ---------- Attu ---------- attu: container_name: ce_attu image: zilliz/attu:v2.6 environment: MILVUS_URL: ce_milvus:19530 networks: - ce_network ports: - "3000:3000" # 浏览器访问端口 depends_on: - milvus restart: unless-stopped # ---------- RabbitMQ ---------- rabbitmq: image: rabbitmq:4.2-rc-management-alpine container_name: ce_rabbitmq hostname: ce_rabbitmq environment: RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: 123456 ports: - "5672:5672" - "15672:15672" - "15692:15692" command: > sh -c "rabbitmq-plugins enable --offline rabbitmq_prometheus && rabbitmq-server" volumes: - rabbitmq_data:/var/lib/rabbitmq networks: - ce_network restart: unless-stopped # ---------- 数据卷 ---------- volumes: postgres_data: name: ce_postgres_data redis_data: name: ce_redis_data etcd_data: name: ce_etcd_data milvus_data: name: ce_milvus_data rabbitmq_data: name: ce_rabbitmq_data # ---------- 网络 ---------- networks: ce_network: external: true