Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 24 additions & 34 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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 \
Expand All @@ -60,6 +48,8 @@ RUN apt-get clean && \
&& rm -rf /var/lib/apt/lists/* \
&& npm install -g pnpm



# 设置工作目录
WORKDIR /app

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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"]
CMD ["./start_genie.sh"]
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
24 changes: 23 additions & 1 deletion README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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