hermes-agent / Dockerfile
atvor's picture
Update Dockerfile
3392383 verified
Raw
History Blame Contribute Delete
2.5 kB
FROM debian:13.4
# 1. 设置环境变量
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PORT=7860 \
HOME=/home/user \
VIRTUAL_ENV=/home/user/venv \
HERMES_HOME=/home/user/data \
INSTALL_DIR=/home/user/app \
REAL_APP_PORT=8088
ENV PATH="$VIRTUAL_ENV/bin:$HOME/.local/bin:$PATH"
# 2. 安装系统依赖(增加了 nginx 和 apache2-utils)
USER root
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
python3 \
python3-pip \
python3-dev \
nodejs \
npm \
ripgrep \
ffmpeg \
gcc \
libffi-dev \
procps \
curl \
ca-certificates \
git \
nginx \
apache2-utils \
libnss3 libatk-bridge2.0-0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2 && \
# --- 手动下载 ttyd ---
curl -Lo /usr/local/bin/ttyd https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64 && \
chmod +x /usr/local/bin/ttyd && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 3. 创建用户并配置 Nginx 目录权限
RUN useradd -m -u 1000 user && \
chown -R user:user /var/lib/nginx /var/log/nginx /etc/nginx/sites-available /etc/nginx/sites-enabled && \
touch /run/nginx.pid && chown user:user /run/nginx.pid
USER user
WORKDIR $INSTALL_DIR
# 4. 拷贝项目代码
COPY --chown=user:user . .
# 5. 安装依赖
RUN pip install --no-cache-dir uv --break-system-packages && \
uv venv $VIRTUAL_ENV && \
uv pip install --no-cache -e ".[all]" fastapi uvicorn lark-oapi && \
npm install --prefer-offline --no-audit && \
npx playwright install chromium && \
cd scripts/whatsapp-bridge && \
npm install --prefer-offline --no-audit && \
npm cache clean --force
# 6. 配置权限
RUN mkdir -p $HERMES_HOME && chmod +x docker/entrypoint.sh
# 7. 启动
EXPOSE 7860
# 覆盖原本的 ENTRYPOINT,先由 shell 处理环境变量
ENTRYPOINT [ "/bin/sh", "-c", "htpasswd -b -c /home/user/.htpasswd admin $APP_PASSWORD && \
printf \"server {\\n listen 7860;\\n location / {\\n auth_basic 'Restricted';\\n auth_basic_user_file /home/user/.htpasswd;\\n proxy_pass http://127.0.0.1:8088;\\n proxy_set_header Host \\$host;\\n proxy_set_header Upgrade \\$http_upgrade;\\n proxy_set_header Connection 'upgrade';\\n }\\n}\" > /etc/nginx/sites-enabled/default && \
nginx -g 'daemon on;' && \
PORT=8088 /bin/sh docker/entrypoint.sh" ]