From 91f0fadadbb449579c9a1ec002b4cd4ab69301d6 Mon Sep 17 00:00:00 2001 From: ZackYoung Date: Thu, 21 Aug 2025 14:37:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20docker-compose?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 58 +++++++++++++++++++--------------------------- docker-compose.yml | 15 ++++++++++++ 2 files changed, 39 insertions(+), 34 deletions(-) create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile index 33ef7375..3f010733 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,20 @@ +ARG DOCKER_IMAGE=docker.m.daocloud.io +ARG NPM_REGISTRY=https://registry.npmmirror.com +ARG APK_MIRROR=mirrors.aliyun.com +ARG PIP_MIRROR=https://mirrors.aliyun.com/pypi/simple + # 前端构建阶段 -FROM docker.m.daocloud.io/library/node:20-alpine as frontend-builder +FROM ${DOCKER_IMAGE}/library/node:20-alpine as frontend-builder WORKDIR /app RUN npm install -g pnpm COPY ui/package.json ./ -RUN npm config set registry https://registry.npmmirror.com +RUN npm config set registry ${NPM_REGISTRY} RUN pnpm install COPY ui/ . RUN pnpm build # 后端构建阶段 -FROM docker.m.daocloud.io/library/maven:3.8-openjdk-17 as backend-builder +FROM ${DOCKER_IMAGE}/library/maven:3.8-openjdk-17 as backend-builder WORKDIR /app COPY genie-backend/pom.xml . COPY genie-backend/src ./src @@ -18,40 +23,23 @@ RUN chmod +x build.sh start.sh RUN ./build.sh # Python 环境准备阶段 -FROM docker.m.daocloud.io/library/python:3.11-slim as python-base +FROM docker.m.daocloud.io/library/python:3.11-alpine as python-base +ARG PIP_MIRROR WORKDIR /app +RUN apk add --no-cache build-base curl netcat-openbsd procps -RUN rm /etc/apt/sources.list.d/* && echo 'deb https://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware' \ - > /etc/apt/sources.list && \ - echo 'deb https://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free non-free-firmware' \ - >> /etc/apt/sources.list && \ - echo 'deb https://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware' \ - >> /etc/apt/sources.list - -RUN apt-get clean && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - build-essential \ - netcat-openbsd \ - procps \ - curl \ - && rm -rf /var/lib/apt/lists/* -RUN pip install uv +RUN pip install uv -i ${PIP_MIRROR} # 最终运行阶段 -FROM docker.m.daocloud.io/library/python:3.11-slim +FROM ${DOCKER_IMAGE}/library/python:3.11-alpine +ARG APK_MIRROR +ARG PIP_MIRROR # 安装系统依赖 -RUN rm /etc/apt/sources.list.d/* && echo 'deb https://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware' \ - > /etc/apt/sources.list && \ - echo 'deb https://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free non-free-firmware' \ - >> /etc/apt/sources.list && \ - echo 'deb https://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware' \ - >> /etc/apt/sources.list -RUN apt-get clean && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - openjdk-17-jre-headless \ +RUN sed -i "s/dl-cdn.alpinelinux.org/${APK_MIRROR}/g" /etc/apk/repositories + +RUN apk add --no-cache \ + openjdk17-jre-headless \ netcat-openbsd \ procps \ curl \ @@ -60,6 +48,8 @@ RUN apt-get clean && \ && rm -rf /var/lib/apt/lists/* \ && npm install -g pnpm + + # 设置工作目录 WORKDIR /app @@ -85,7 +75,7 @@ COPY genie-client/main.py genie-client/server.py genie-client/start.sh ./ RUN chmod +x start.sh && \ uv venv .venv && \ . .venv/bin/activate && \ - export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple" && uv sync + export UV_DEFAULT_INDEX="${PIP_MIRROR}" && uv sync # 复制 genie-tool WORKDIR /app/tool @@ -97,7 +87,7 @@ COPY genie-tool/server.py genie-tool/start.sh genie-tool/.env_template ./ RUN chmod +x start.sh && \ uv venv .venv && \ . .venv/bin/activate && \ - export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple" && uv sync && \ + export UV_DEFAULT_INDEX="${PIP_MIRROR}" && uv sync && \ mkdir -p /data/genie-tool && \ cp .env_template .env && \ python -m genie_tool.db.db_engine @@ -117,4 +107,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:3000 || exit 1 # 启动所有服务 -CMD ["./start_genie.sh"] \ No newline at end of file +CMD ["./start_genie.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..4585ab52 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3" + +services: + build-service: + build: + context: ./ + dockerfile: Dockerfile + image: genie:latest + ports: + - "3000:3000" + - "8080:8080" + - "1601:1601" + volumes: + - ./genie-backend/src/main/resources/application.yml:/app/backend/target/genie-backend/conf/application.yml + - ./genie-tool/.env_template:/app/tool/.env From 14ab94933f8ce0f3c3168895b690ff1a356394d7 Mon Sep 17 00:00:00 2001 From: ZackYoung Date: Thu, 21 Aug 2025 15:24:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0docker-compose=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 +++++++++++++++++++- README_EN.md | 24 +++++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b2835eed..50a83841 100644 --- a/README.md +++ b/README.md @@ -245,7 +245,25 @@ docker run -d -p 3000:3000 -p 8080:8080 -p 1601:1601 --name genie-app genie:late ``` 如果部署遇到问题,可以参考视频:【5分钟使用deepseek启动开源智能体应用joyagent-genie-哔哩哔哩】 https://b23.tv/8VQDBOK -### 方式2: 手动初始化环境,启动服务 +### 方式2: docker-compose + +> `application.yml` 和 `.env_template` 文件 修改后,重新执行 `docker-compose up -d`即可生效 +``` +1. git clone https://github.com/jd-opensource/joyagent-jdgenie.git + +2. 手动更新 genie-backend/src/main/resources/application.yml中 base_url、apikey、model、max_tokens、model_name等配置 +使用DeepSeek时: 注意deepseek-chat 为max_tokens: 8192 + +手动更新 genie-tool/.env_template 中的 OPENAI_API_KEY、OPENAI_BASE_URL、DEFAULT_MODEL、SERPER_SEARCH_API_KEY +使用DeepSeek时: 设置DEEPSEEK_API_KEY、DEEPSEEK_API_BASE,DEFAULT_MODEL 设置为 deepseek/deepseek-chat,所有 ${DEFAULT_MODEL} 也都改成deepseek/deepseek-chat + +3. 启动服务 +docker-compose up -d + +4. 浏览器输入 localhost:3000 访问genie +``` + +### 方式3: 手动初始化环境,启动服务 #### 环境准备 - jdk17 diff --git a/README_EN.md b/README_EN.md index 4ba18f0c..8e61f916 100644 --- a/README_EN.md +++ b/README_EN.md @@ -258,7 +258,29 @@ Open http://localhost:3000 ``` If you encounter deployment issues, refer to this video tutorial:【5分钟使用deepseek启动开源智能体应用joyagent-genie-哔哩哔哩】 https://b23.tv/8VQDBOK -### Method 2: Manual Environment Initialization and Service Launch +### Method 2: Docker-compose + +> `application.yml` 和 `.env_template` 文件 修改后,重新执行 `docker-compose up -d`即可生效 +``` +1.git clone https://github.com/jd-opensource/joyagent-jdgenie.git + +2.Manually update the following configurations in genie-backend/src/main/resources/application.yml: +base_url, apikey, model, max_tokens, model_name +Note for DeepSeek users: Set max_tokens: 8192 for deepseek-chat + +Manually update the following environment variables in genie-tool/.env_template: +OPENAI_API_KEY, OPENAI_BASE_URL, DEFAULT_MODEL, SERPER_SEARCH_API_KEY +DeepSeek Configuration:Set DEEPSEEK_API_KEY and DEEPSEEK_API_BASE,Configure DEFAULT_MODEL = deepseek/deepseek-chat, +Replace all occurrences of ${DEFAULT_MODEL} with deepseek/deepseek-chat + +3.Launch Docker Services +docker-compose up -d + +4.Access Genie via browser +Open http://localhost:3000 +``` + +### Method 3: Manual Environment Initialization and Service Launch #### Prerequisites - jdk17