Update Dockerfile
Browse files- Dockerfile +26 -17
Dockerfile
CHANGED
|
@@ -2,7 +2,7 @@ FROM docker.io/nikolaik/python-nodejs:python3.11-nodejs20
|
|
| 2 |
|
| 3 |
USER root
|
| 4 |
|
| 5 |
-
# 1. 基础依赖:包含 lsof, git, build-essential
|
| 6 |
RUN apt-get update && apt-get install -y \
|
| 7 |
ripgrep ffmpeg git lsof build-essential \
|
| 8 |
&& rm -rf /var/lib/apt/lists/*
|
|
@@ -15,25 +15,34 @@ RUN npm install -g hermes-web-ui
|
|
| 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 |
ENV PATH="/home/user/.local/bin:${PATH}"
|
| 24 |
|
| 25 |
-
#
|
| 26 |
-
CMD
|
| 27 |
-
sed -i "s/nvapi-666666/${NVIDIA_API_KEY}/g" /home/user/.hermes/config.yaml && \
|
| 28 |
-
echo "Starting Hermes Gateway without systemd..." && \
|
| 29 |
-
# 使用 run 代替 start,直接在前台非守护模式拉起进程
|
| 30 |
-
hermes gateway run & \
|
| 31 |
-
sleep 5 && \
|
| 32 |
-
echo "Starting Hermes Web UI..." && \
|
| 33 |
-
# 执行 Web UI 启动。无论成功与否,强制输出日志以供排查
|
| 34 |
-
hermes-web-ui start --host 0.0.0.0 --port 7860 ; \
|
| 35 |
-
echo "========= WEB UI SERVER LOG =========" && \
|
| 36 |
-
cat /home/user/.hermes-web-ui/server.log || echo "No log file found." && \
|
| 37 |
-
echo "=====================================" && \
|
| 38 |
-
# 用 tail 挂起主进程,防止容器直接退出
|
| 39 |
-
tail -f /home/user/.hermes-web-ui/server.log
|
|
|
|
| 2 |
|
| 3 |
USER root
|
| 4 |
|
| 5 |
+
# 1. 基础依赖:包含 lsof, git, build-essential 等
|
| 6 |
RUN apt-get update && apt-get install -y \
|
| 7 |
ripgrep ffmpeg git lsof build-essential \
|
| 8 |
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
| 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 |
+
# 这个脚本保证无论谁崩溃,都会乖乖把 server.log 打印出来
|
| 20 |
+
RUN echo '#!/bin/bash\n\
|
| 21 |
+
# 注入 Key\n\
|
| 22 |
+
sed -i "s/sk-666666/${GEMINI_API_KEY}/g" /home/user/.hermes/config.yaml\n\
|
| 23 |
+
sed -i "s/nvapi-666666/${NVIDIA_API_KEY}/g" /home/user/.hermes/config.yaml\n\
|
| 24 |
+
\n\
|
| 25 |
+
echo "=> Starting Hermes Gateway..."\n\
|
| 26 |
+
hermes gateway run &\n\
|
| 27 |
+
sleep 5\n\
|
| 28 |
+
\n\
|
| 29 |
+
echo "=> Starting Hermes Web UI..."\n\
|
| 30 |
+
hermes-web-ui start --host 0.0.0.0 --port 7860\n\
|
| 31 |
+
\n\
|
| 32 |
+
echo "========= WEB UI SERVER LOG ========="\n\
|
| 33 |
+
cat /home/user/.hermes-web-ui/server.log || echo "Warning: log file not generated."\n\
|
| 34 |
+
echo "====================================="\n\
|
| 35 |
+
\n\
|
| 36 |
+
# 强行挂起主进程,防止容器重启\n\
|
| 37 |
+
tail -f /home/user/.hermes-web-ui/server.log /home/user/.hermes/logs/gateway.log\n\
|
| 38 |
+
' > /home/user/start.sh && chmod +x /home/user/start.sh
|
| 39 |
+
|
| 40 |
+
# 5. 权限与环境切换
|
| 41 |
RUN chown -R 1000:1000 /home/user
|
| 42 |
USER 1000
|
| 43 |
WORKDIR /home/user
|
| 44 |
ENV HOME=/home/user
|
| 45 |
ENV PATH="/home/user/.local/bin:${PATH}"
|
| 46 |
|
| 47 |
+
# 6. 执行脚本
|
| 48 |
+
CMD ["/home/user/start.sh"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|