grook / Dockerfile
lazyfling's picture
Update Dockerfile
1eef2e4 verified
# 步骤 1: 基于官方镜像
FROM verofess/grok2api:latest
# 步骤 2: 切换到 root 用户,以进行环境设置
USER root
# 步骤 3: 创建一个可写的目录,并为 Playwright (应用底层依赖) 指定数据路径
# 这是为了解决 EACCES: permission denied 错误
RUN mkdir -p /data/writable-app-data && chmod -R 777 /data
RUN rm -rf /app/data
# 3. 创建一个从 '/app/data' 指向我们可写目录的符号链接。
RUN ln -s /data/writable-app-data /app/data
# 步骤 4: 设置应用运行的主机和端口。
# 虽然我们将通过CMD强制指定,但保留这些ENV是个好习惯。
ENV HOST="0.0.0.0"
ENV PORT="7860"
# 步骤 5: 告诉 Hugging Face 容器将暴露 7860 端口
EXPOSE 7860
# 步骤 6: 添加健康检查,确保应用在 7860 端口成功启动
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:7860/ || exit 1
# 步骤 7: 关键修复!覆盖镜像的默认启动命令。
# 我们直接调用应用的启动脚本 app.py,并用 --host 和 --port 参数强制其在正确的地址和端口上运行。
# 这解决了应用忽略环境变量并启动在 5200 端口的问题。
WORKDIR /app
CMD ["python", "app.py", "--host", "0.0.0.0", "--port", "7860"]