diff --git a/server/docker/infra-compose-dev.yaml b/server/docker/infra-compose-dev.yaml new file mode 100644 index 0000000..70f4117 --- /dev/null +++ b/server/docker/infra-compose-dev.yaml @@ -0,0 +1,162 @@ + +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