diff --git a/.gitignore b/.gitignore index 48fb7a4..2e261d6 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ bbit_ai/test/ocr/PP-OCRv5_server_det_infer/ bbit_ai/test/ocr/PP-OCRv5_server_rec_infer/ vue/vue.tar bbit_ai/test/ocr/ -bbit_ai/ce-pybackend.tar +bbit_ai/ce_pybackend.tar diff --git a/readme.md b/readme.md index 193ef96..bda671c 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,15 @@ # ICP(Intelligence Control Platform) -## 简介 +## 一、简介 主干AI实验室使用以下技术栈: +- ### 部署 + + - **Docker**:项目部署 + - **Nginx**:前端项目部署 + - **Kong**: 网关 + - ### 前端 - **Vue**:Vben Admin作为框架 @@ -13,7 +19,8 @@ - **Ktor**:业务后端 - 开发语言:**Java/Kotlin** - - **Python** FastAPI:实验室AI模块后端程序 + - **FastAPI**:实验室AI模块后端程序 + - 开发语言:**Python** - ### 数据库 @@ -30,12 +37,33 @@ - **MinIO**:实验室对象存储服务器 -- ### 部署 +## 二、端口使用 - - **Docker**:项目部署 - - **Nginx**:前端项目部署 +公网域名:s1.ronsunny.cn -## 部署 +| 公网端口 | 内网端口 | 框架 | docker服务/Host | docker端口 | 功能作用 | +| -------- | -------- | ---------- | --------------- | ---------- | --------------------------------------- | +| | | Vue | ce_vue | 8090 | vue前端服务 | +| | | FastAPI | ce_pybackend | 13011 | python后端程序 | +| | 5432 | PostgreSQL | ce_postgres | 5432 | PostgreSQL数据库 | +| | 6379 | Redis | ce_redis | 6379 | Radis数据库 | +| | | Etcd | ce_etcd | 2379 | Etcd,Key-Value 存储,给ce_milvus使用 | +| **9000** | 9000 | MinIO | ce_minio | 9000 | MinIO数据访问 | +| | 9001 | | ce_minio | 9001 | MinIOWeb控制端 | +| | 19530 | Milvus | ce_milvus | 19530 | Minvus数据访问 | +| | 9091 | | ce_milvus | 9091 | MinvusWeb控制端,需要加/webui | +| | 3000 | Attu | ce_attu | 3000 | Attu,Minvus的**可视化**控制 | +| **8090** | 8090 | Kong | ce_kong | 8090 | Kong网关 | +| | 8001 | | ce_kong | 8001 | Kong Admin API | +| | 8002 | | ce_kong | 8002 | Kong Admin API 的 HTTPS 端口 | +| | 8444 | | ce_kong | 8444 | Kong **可视化**管理界面 | +| | 8088 | ws-scrcpy | | | Android远程框架 | +| 8088 | | | | | 已废弃,原Android远程框架,已由网关控制 | +| 8089 | | | | | 已废弃,原Ktor后端服务,已由网关控制 | +| 13011 | | | | | 已废弃:原FastAPI后端服务,已由网关控制 | + + +## 三、部署 ### 后端 @@ -60,31 +88,32 @@ 1. 打包Docker ``` - docker build -t ce-pybackend . + docker build -t ce_pybackend . ``` 2. 保存Image为文件 ``` - docker save -o ce-pybackend.tar ce-pybackend + docker save -o ce-pybackend.tar ce_pybackend ``` 3. 将保存好的Image`ce-pybackend.tar`上传到服务器 4. 删除服务器的旧版镜像 ``` - docker rmi ce-pybackend:latest + docker rmi ce_pybackend:latest ``` -5. 读取上传的新镜像 +5. **读取上传的新镜像** + ``` - docker load -i ce-pybackend.tar + docker load -i ce_pybackend.tar ``` 其他命令: - 测试运行docker ``` - docker run -d -p 13011:13011 ce-pybackend + docker run -d -p 13011:13011 ce_pybackend ``` - 调试运行项目 @@ -94,7 +123,7 @@ - docker日志查看 ``` - docker logs -f ce-pybackend + docker logs -f ce_pybackend ``` ### 前端 @@ -108,7 +137,7 @@ 2. 将Image保存为文件 ```shell - docker save -o vue.tar ce-vue + docker save -o vue.tar ce_vue ``` 3. 将保存好的Image`vue.tar`上传到服务器 @@ -122,7 +151,7 @@ 5. 删除之前的Image ```shell - docker rmi ce-vue:latest + docker rmi ce_vue:latest ``` 6. 在服务器读取Image @@ -150,6 +179,12 @@ ## 其他 +### docker的地址 + +windows:host.docker.internal + +Linux:ip addr show docker0 查看 + ### Vue项目使用 - 本地运行dist文件夹 diff --git a/server/docker-compose.yml b/server/docker-compose.yaml similarity index 52% rename from server/docker-compose.yml rename to server/docker-compose.yaml index 602995f..0d70ad1 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yaml @@ -1,44 +1,52 @@ + +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: + # ---------- Vue 前端 ---------- vue: container_name: ce_vue - image: ce-vue:latest - ports: - - "8090:8090" # 映射到宿主机的 8090 端口 + image: ce_vue:latest + networks: + - ce_network restart: always - networks: - - ce_network - + + # ---------- Python 后端 ---------- backend: - container_name: ce-pybackend - image: ce-pybackend:latest - ports: - - "13011:13011" - restart: unless-stopped + container_name: ce_pybackend + image: ce_pybackend:latest networks: - ce_network + restart: unless-stopped depends_on: - vue extra_hosts: - "s1.ronsunny.cn:10.10.10.9" + # ---------- PostgreSQL ---------- postgres: - image: postgres:15-alpine container_name: ce_postgres + image: postgres:15-alpine environment: - POSTGRES_DB: ktor + POSTGRES_DB: ktor # 实际上这里已经没用了,因为卷已经创建了,现在在用ktor2、kong两个数据库 POSTGRES_USER: postgres POSTGRES_PASSWORD: 123456 - volumes: - - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data networks: - ce_network restart: unless-stopped + # ---------- Redis ---------- redis: - image: redis:7.2.3-alpine container_name: ce_redis + image: redis:7.2.3-alpine volumes: - redis_data:/data ports: @@ -47,43 +55,29 @@ services: - ce_network restart: unless-stopped + # ---------- MinIO ---------- minio: - image: minio/minio:RELEASE.2025-03-12T18-04-18Z container_name: ce_minio + image: minio/minio:RELEASE.2025-03-12T18-04-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin - volumes: - - minio_data:/data ports: - "9000:9000" - "9001:9001" - command: server /data --console-address ":9001" + volumes: + - minio_data:/data networks: - ce_network restart: unless-stopped + command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 -# ollama: -# image: ollama/ollama -# container_name: ce_ollama -# deploy: -# resources: -# reservations: -# devices:7 -# - capabilities: [gpu] # 启用 GPU 支持 -# volumes: -# - ollama_data:/root/.ollama # 持久化 ollama 数据 -# ports: -# - "11434:11434" # 暴露 ollama 的端口 -# networks: -# - ce_network -# restart: unless-stopped - + # ---------- ETCD ---------- etcd: container_name: ce_etcd image: quay.io/coreos/etcd:v3.5.18 @@ -103,18 +97,19 @@ services: timeout: 20s retries: 3 + # ---------- Milvus ---------- milvus: container_name: ce_milvus image: milvusdb/milvus:v2.6.1 command: ["milvus", "run", "standalone"] security_opt: - - seccomp:unconfined + - seccomp:unconfined environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 MQ_TYPE: woodpecker networks: - - ce_network + - ce_network volumes: - milvus_data:/var/lib/milvus healthcheck: @@ -124,34 +119,96 @@ services: timeout: 20s retries: 3 ports: - - "19530:19530" - - "9091:9091" + - "19530:19530" # 服务用 + - "9091:9091" # GUI用 depends_on: - - "etcd" - - "minio" + - etcd + - minio + + # ---------- Attu ---------- attu: - image: zilliz/attu:v2.6 container_name: ce_attu + image: zilliz/attu:v2.6 environment: - MILVUS_URL: ce_milvus:19530 # 指向你的 Milvus 容器 - ports: - - "19531:3000" # 浏览器访问端口 + MILVUS_URL: ce_milvus:19530 networks: - ce_network + ports: + - "3000:3000" # 浏览器访问端口 restart: unless-stopped depends_on: - milvus -# 定义数据卷 + # ---------- Kong 网关 ---------- + kong-migrations: + image: kong:3.9.1-ubuntu + container_name: ce_kong_migrations + command: kong migrations bootstrap + depends_on: + - postgres + environment: + <<: *kong-env + networks: + - ce_network + restart: on-failure + + kong-migrations-up: + image: kong:3.9.1-ubuntu + container_name: ce_kong_migrations_up + command: kong migrations up && kong migrations finish + depends_on: + - postgres + environment: + <<: *kong-env + networks: + - ce_network + restart: on-failure + + kong: + image: kong:3.9.1-ubuntu + container_name: ce_kong + user: kong + environment: + <<: *kong-env + KONG_ADMIN_ACCESS_LOG: /dev/stdout + KONG_ADMIN_ERROR_LOG: /dev/stderr + KONG_PROXY_ACCESS_LOG: /dev/stdout + KONG_PROXY_ERROR_LOG: /dev/stderr + KONG_PREFIX: /var/run/kong + + KONG_PROXY_LISTEN: "0.0.0.0:8090" # 对外暴露端口 + KONG_ADMIN_LISTEN: "0.0.0.0:8001" # Admin GUI + KONG_ADMIN_GUI_LISTEN: "0.0.0.0:8002" + ports: + - "8090:8090" # 代理端口对外 + - "8001:8001/tcp" + - "8002:8002/tcp" + - "8444:8444/tcp" + volumes: + - kong_prefix_vol:${KONG_PREFIX:-/var/run/kong} + - kong_tmp_vol:/tmp + - ./config:/opt/kong + networks: + - ce_network + restart: unless-stopped + +# ---------- 数据卷 ---------- volumes: postgres_data: redis_data: minio_data: - ollama_data: # 定义 ollama 的数据卷 etcd_data: milvus_data: + kong_prefix_vol: + driver_opts: + type: tmpfs + device: tmpfs + kong_tmp_vol: + driver_opts: + type: tmpfs + device: tmpfs -# 定义网络 +# ---------- 网络 ---------- networks: ce_network: driver: bridge