Преглед изворни кода

feat(docker): 添加Celery服务并优化Docker部署流程

添加start.sh脚本用于启动Celery后台服务
更新docker-compose.yml启用Celery服务容器
简化Dockerfile.backend依赖安装方式
更新启动说明文档添加Docker部署指南
DengPeng пре 2 недеља
родитељ
комит
871c97c49f
4 измењених фајлова са 69 додато и 87 уклоњено
  1. 5 59
      Dockerfile.backend
  2. 27 28
      docker-compose.yml
  3. 14 0
      start.sh
  4. 23 0
      启动说明.md

+ 5 - 59
Dockerfile.backend

@@ -27,70 +27,16 @@ RUN pip install --no-cache-dir --upgrade pip setuptools wheel
 
 
 COPY pyproject.toml ./
 COPY pyproject.toml ./
 
 
-RUN pip install --no-cache-dir --break-system-packages torch==2.8.0 --index-url https://pypi.tuna.tsinghua.edu.cn/simple
-
-RUN pip install --no-cache-dir --break-system-packages \
-    django==5.2.13 \
-    drf-spectacular==0.28.0 \
-    django-redis==6.0.0 \
-    django-db-connection-pool==1.2.6 \
-    django-mptt==0.17.0 \
-    djangorestframework==3.17.1 \
-    psycopg==3.2.9 \
-    python-dotenv==1.1.1 \
-    uuid-utils==0.14.0 \
-    captcha==0.7.1 \
-    pytz==2025.2 \
-    psutil==7.0.0 \
-    cffi==1.17.1 \
-    beautifulsoup4==4.13.4 \
-    jieba==0.42.1 \
-    langchain==1.2.15 \
-    langchain-core==1.2.31 \
-    langchain-openai==1.1.14 \
-    langchain-anthropic==1.4.0 \
-    langchain-community==0.4.1 \
-    langchain-deepseek==1.0.1 \
-    langchain-google-genai==4.2.2 \
-    langchain-mcp-adapters==0.2.2 \
-    langchain-huggingface==1.2.1 \
-    langchain-ollama==1.1.0 \
-    langchain-aws==1.4.4 \
-    langgraph==1.1.6 \
-    deepagents==0.5.3 \
-    numpy==1.26.4 \
-    qianfan==0.4.12.3 \
-    zhipuai==2.1.5.20250708 \
-    volcengine-python-sdk==4.0.5 \
-    boto3==1.42.46 \
-    tencentcloud-sdk-python==3.0.1420 \
-    xinference-client==1.7.1.post1 \
-    anthropic==0.89.0 \
-    dashscope==1.25.16 \
-    celery==5.5.3 \
-    django-celery-beat==2.8.1 \
-    celery-once==3.0.1 \
-    django-apscheduler==0.7.0 \
-    html2text==2025.4.15 \
-    openpyxl==3.1.5 \
-    python-docx==1.2.0 \
-    xlrd==2.0.2 \
-    xlwt==1.3.0 \
-    pymupdf==1.26.3 \
-    pypdf==6.10.2 \
-    pydub==0.25.1 \
-    gunicorn==23.0.0 \
-    python-daemon==3.1.2 \
-    websockets==15.0.1 \
-    cohere==5.17.0 \
-    jsonpath-ng==1.8.0 \
-    sentence-transformers==5.0.0
+RUN pip install .
 
 
 COPY apps/ ./apps/
 COPY apps/ ./apps/
 COPY main.py ./
 COPY main.py ./
 
 
 RUN mkdir -p /opt/maxkb-app/model/base /opt/maxkb-app/tmp /opt/maxkb-app/logs
 RUN mkdir -p /opt/maxkb-app/model/base /opt/maxkb-app/tmp /opt/maxkb-app/logs
 
 
+COPY start.sh /opt/maxkb-app/start.sh
+RUN chmod +x /opt/maxkb-app/start.sh
+
 EXPOSE 8080
 EXPOSE 8080
 
 
-CMD ["python", "main.py", "start", "all"]
+CMD ["/opt/maxkb-app/start.sh"]

+ 27 - 28
docker-compose.yml

@@ -45,7 +45,7 @@ services:
       - maxkb-web
       - maxkb-web
 
 
   maxkb-web:
   maxkb-web:
-    image: zhagent-back:latest
+    image: zhagent-backend:latest
     container_name: maxkb-web
     container_name: maxkb-web
     environment:
     environment:
       MAXKB_CONFIG_TYPE: ENV
       MAXKB_CONFIG_TYPE: ENV
@@ -75,33 +75,32 @@ services:
       - maxkb-network
       - maxkb-network
     restart: unless-stopped
     restart: unless-stopped
 
 
-  # maxkb-celery:
-  #   image: zhagent-back:latest
-  #   container_name: maxkb-celery
-  #   environment:
-  #     MAXKB_CONFIG_TYPE: ENV
-  #     MAXKB_DB_NAME: maxkb
-  #     MAXKB_DB_HOST: postgres
-  #     MAXKB_DB_PORT: 5432
-  #     MAXKB_DB_USER: postgres
-  #     MAXKB_DB_PASSWORD: postgres
-  #     MAXKB_REDIS_HOST: redis
-  #     MAXKB_REDIS_PORT: 6379
-  #     MAXKB_REDIS_DB: 0
-  #   depends_on:
-  #     postgres:
-  #       condition: service_healthy
-  #     redis:
-  #       condition: service_healthy
-  #     maxkb-web:
-  #       condition: service_started
-  #   volumes:
-  #     - model_data:/opt/maxkb-app/model/base
-  #     - tmp_data:/opt/maxkb-app/tmp
-  #     - log_data:/opt/maxkb-app/logs
-  #   networks:
-  #     - maxkb-network
-  #   restart: unless-stopped
+  maxkb-celery:
+    image: zhagent-backend:latest
+    container_name: maxkb-celery
+    command: ["python", "main.py", "dev", "celery"]
+    environment:
+      MAXKB_CONFIG_TYPE: ENV
+      MAXKB_DB_NAME: maxkb
+      MAXKB_DB_HOST: postgres
+      MAXKB_DB_PORT: 5432
+      MAXKB_DB_USER: postgres
+      MAXKB_DB_PASSWORD: postgres
+      MAXKB_REDIS_HOST: redis
+      MAXKB_REDIS_PORT: 6379
+      MAXKB_REDIS_DB: 0
+    depends_on:
+      postgres:
+        condition: service_healthy
+      redis:
+        condition: service_healthy
+    volumes:
+      - model_data:/opt/maxkb-app/model/base
+      - tmp_data:/opt/maxkb-app/tmp
+      - log_data:/opt/maxkb-app/logs
+    networks:
+      - maxkb-network
+    restart: unless-stopped
 
 
 volumes:
 volumes:
   postgres_data:
   postgres_data:

+ 14 - 0
start.sh

@@ -0,0 +1,14 @@
+#!/bin/bash
+
+echo "Starting Celery in background..."
+celery_log="/opt/maxkb-app/logs/celery.log"
+touch "$celery_log"
+
+nohup python main.py dev celery >> "$celery_log" 2>&1 &
+echo "Celery started in background, PID: $!"
+
+echo "Waiting for services to initialize..."
+sleep 5
+
+echo "Starting Web server..."
+python main.py dev web

+ 23 - 0
启动说明.md

@@ -22,3 +22,26 @@
 
 
 * E:\\ProductSpcae\\ZhAgentOS1.0\\ui>npm run chat
 * E:\\ProductSpcae\\ZhAgentOS1.0\\ui>npm run chat
 
 
+## Docker 启动方式
+
+构建前端镜像->E:\\ProductSpcae\\ZhAgentOS1.0
+
+* docker build -f Dockerfile.frontend -t zhagent-frontend:latest .
+
+构建后端镜像->E:\\ProductSpcae\\ZhAgentOS1.0
+
+* docker build -f Dockerfile.backend -t zhagent-backend:latest .
+
+启动所有服务->E:\\ProductSpcae\\ZhAgentOS1.0
+
+* docker-compose up -d
+
+查看服务状态->E:\\ProductSpcae\\ZhAgentOS1.0
+
+* docker-compose ps
+
+查看日志->E:\\ProductSpcae\\ZhAgentOS1.0
+
+* docker-compose logs -f maxkb-web
+* docker-compose logs -f maxkb-celery
+