FROM python:3.10-slim # 安装系统依赖(包含 Git 和 Playwright 所需的所有库) # 这一层会被缓存,除非 Dockerfile 改变 RUN apt-get update && apt-get install -y \ wget \ gnupg \ ca-certificates \ fonts-liberation \ fonts-unifont \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libatspi2.0-0 \ libcups2 \ libdbus-1-3 \ libdrm2 \ libgbm1 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libwayland-client0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxkbcommon0 \ libxrandr2 \ xdg-utils \ git \ libu2f-udev \ libvulkan1 \ libxss1 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 复制依赖文件(这一层变化少,会被缓存) COPY requirements.txt . # 安装 Python 依赖(这一层也会被缓存) RUN pip install --no-cache-dir -r requirements.txt # 安装 Playwright 浏览器(这一层也会被缓存) RUN playwright install chromium # 复制应用代码(只有代码变化时才会重新执行后面层) COPY . . # 创建数据目录 RUN mkdir -p /app/data /app/data/screenshots # 暴露端口 EXPOSE 18085 # 设置环境变量 ENV HOST=0.0.0.0 ENV PORT=18085 ENV HEADLESS=false ENV SCREENSHOT_ON_ERROR=true # 启动脚本(支持 Git 自动更新) COPY entrypoint.sh /app/entrypoint.sh RUN chmod +x /app/entrypoint.sh ENTRYPOINT ["/app/entrypoint.sh"]