Spaces:
Paused
Paused
| 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" ] |