|
FROM python:3.11-slim |
|
|
|
# 安装 Chrome 和必要的依赖 |
|
RUN apt-get update && apt-get install -y \ |
|
wget \ |
|
gnupg \ |
|
&& wget -q -O - https: |
|
&& echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list \ |
|
&& apt-get update \ |
|
&& apt-get install -y \ |
|
google-chrome-stable \ |
|
fonts-ipafont-gothic \ |
|
fonts-wqy-zenhei \ |
|
fonts-thai-tlwg \ |
|
fonts-kacst \ |
|
fonts-freefont-ttf \ |
|
libxss1 \ |
|
libx11-xcb1 \ |
|
libxcomposite1 \ |
|
libxcursor1 \ |
|
libxdamage1 \ |
|
libxi6 \ |
|
libxtst6 \ |
|
libglib2.0-0 \ |
|
libnss3 \ |
|
libcups2 \ |
|
libxss1 \ |
|
libxrandr2 \ |
|
libasound2 \ |
|
libpangocairo-1.0-0 \ |
|
libatk1.0-0 \ |
|
libatk-bridge2.0-0 \ |
|
libgtk-3-0 \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
# 设置工作目录 |
|
WORKDIR /app |
|
|
|
# 设置环境变量 |
|
ENV PYTHONUNBUFFERED=1 \ |
|
PYTHONDONTWRITEBYTECODE=1 \ |
|
PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \ |
|
CHROME_BIN=/usr/bin/google-chrome \ |
|
CHROME_PATH=/usr/lib/google-chrome/ \ |
|
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ |
|
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome |
|
|
|
# 复制依赖文件 |
|
COPY requirements.txt . |
|
|
|
# 安装 Python 依赖 |
|
RUN pip install --no-cache-dir -r requirements.txt |
|
|
|
# 安装 Playwright 浏览器 |
|
RUN playwright install chromium |
|
|
|
# 复制应用代码 |
|
COPY . . |
|
|
|
# 创建非 root 用户 |
|
RUN useradd -m -u 1000 appuser && \ |
|
chown -R appuser:appuser /app |
|
USER appuser |
|
|
|
# 暴露端口 |
|
EXPOSE 7860 |
|
|
|
# 启动命令 |
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"] |