wenyin commited on
Commit
be1103a
·
verified ·
1 Parent(s): 82f5fc0

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +15 -17
Dockerfile CHANGED
@@ -2,36 +2,34 @@ FROM docker.io/nikolaik/python-nodejs:python3.11-nodejs20
2
 
3
  USER root
4
 
5
- # 1. 完善系统依赖
6
  RUN apt-get update && apt-get install -y \
7
- ripgrep \
8
- ffmpeg \
9
- git \
10
- lsof \
11
- build-essential \
12
  && rm -rf /var/lib/apt/lists/*
13
 
14
- # 2. 安装 hermes-agent
15
  RUN pip install --no-cache-dir git+https://github.com/NousResearch/hermes-agent.git
16
-
17
- # 3. 安装 hermes-web-ui
18
  RUN npm install -g hermes-web-ui
19
 
20
- # 4. 创建路径并注入配置
21
  RUN mkdir -p /home/user/.hermes /home/user/.hermes-web-ui
22
  COPY config.yaml /home/user/.hermes/config.yaml
23
 
24
- # 5. 权限与环境变量
25
  RUN chown -R 1000:1000 /home/user
26
  USER 1000
27
  WORKDIR /home/user
28
  ENV HOME=/home/user
29
- # 设置端口环境变量,很多 Node 应用会识别这个
30
- ENV PORT=7860
31
 
32
- # 6. 修正启动逻辑
33
- # 使用 sed 注入 Key,并确保日志输出到 stdout 以防止容器退出
 
34
  CMD sed -i "s/sk-666666/${GEMINI_API_KEY}/g" /home/user/.hermes/config.yaml && \
35
  sed -i "s/nvapi-666666/${NVIDIA_API_KEY}/g" /home/user/.hermes/config.yaml && \
36
- hermes-web-ui start --host 0.0.0.0 --port 7860 && \
37
- sleep 2 && tail -f /home/user/.hermes-web-ui/server.log
 
 
 
 
2
 
3
  USER root
4
 
5
+ # 1. 基础依赖:保持 lsof 和 git 等
6
  RUN apt-get update && apt-get install -y \
7
+ ripgrep ffmpeg git lsof build-essential \
 
 
 
 
8
  && rm -rf /var/lib/apt/lists/*
9
 
10
+ # 2. 安装核心包
11
  RUN pip install --no-cache-dir git+https://github.com/NousResearch/hermes-agent.git
 
 
12
  RUN npm install -g hermes-web-ui
13
 
14
+ # 3. 配置文件注入
15
  RUN mkdir -p /home/user/.hermes /home/user/.hermes-web-ui
16
  COPY config.yaml /home/user/.hermes/config.yaml
17
 
18
+ # 4. 权限与环境变量
19
  RUN chown -R 1000:1000 /home/user
20
  USER 1000
21
  WORKDIR /home/user
22
  ENV HOME=/home/user
23
+ # 显式设置环境变量,防止某些依赖查找失败
24
+ ENV PATH="/home/user/.local/bin:${PATH}"
25
 
26
+ # 5. 终极启动逻辑
27
+ # 我们不再使用 'hermes-web-ui start' 这个坑爹的包装命令
28
+ # 转而直接用 sed 注入 Key,并尝试直接通过后台 API + 前端启动的方式
29
  CMD sed -i "s/sk-666666/${GEMINI_API_KEY}/g" /home/user/.hermes/config.yaml && \
30
  sed -i "s/nvapi-666666/${NVIDIA_API_KEY}/g" /home/user/.hermes/config.yaml && \
31
+ echo "Starting Hermes API Server..." && \
32
+ hermes api-server --port 8642 --host 127.0.0.1 & \
33
+ sleep 5 && \
34
+ echo "Starting Hermes Web UI on port 7860..." && \
35
+ hermes-web-ui start --host 0.0.0.0 --port 7860 --no-daemon