mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-25 07:17:35 +08:00
121 lines
3.0 KiB
Docker
121 lines
3.0 KiB
Docker
# 使用Python 3.11作为基础镜像
|
||
FROM python:3.11-slim
|
||
|
||
# 设置标签信息
|
||
LABEL maintainer="zhinianboke"
|
||
LABEL version="2.0.0"
|
||
LABEL description="闲鱼自动回复系统 - 企业级多用户版本"
|
||
LABEL repository="https://github.com/zhinianboke/xianyu-auto-reply"
|
||
LABEL license="仅供学习使用,禁止商业用途"
|
||
LABEL author="zhinianboke"
|
||
|
||
# 设置工作目录
|
||
WORKDIR /app
|
||
|
||
# 设置环境变量
|
||
ENV PYTHONUNBUFFERED=1
|
||
ENV PYTHONDONTWRITEBYTECODE=1
|
||
ENV TZ=Asia/Shanghai
|
||
ENV DOCKER_ENV=true
|
||
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
|
||
|
||
# 安装系统依赖(包括Playwright浏览器依赖)
|
||
RUN apt-get update && \
|
||
apt-get install -y --no-install-recommends \
|
||
# 基础工具
|
||
nodejs \
|
||
npm \
|
||
tzdata \
|
||
curl \
|
||
ca-certificates \
|
||
# 图像处理依赖
|
||
libjpeg-dev \
|
||
libpng-dev \
|
||
libfreetype6-dev \
|
||
fonts-dejavu-core \
|
||
fonts-liberation \
|
||
# Playwright浏览器依赖
|
||
libnss3 \
|
||
libnspr4 \
|
||
libatk-bridge2.0-0 \
|
||
libdrm2 \
|
||
libxkbcommon0 \
|
||
libxcomposite1 \
|
||
libxdamage1 \
|
||
libxrandr2 \
|
||
libgbm1 \
|
||
libxss1 \
|
||
libasound2 \
|
||
libatspi2.0-0 \
|
||
libgtk-3-0 \
|
||
libgdk-pixbuf2.0-0 \
|
||
libxcursor1 \
|
||
libxi6 \
|
||
libxrender1 \
|
||
libxext6 \
|
||
libx11-6 \
|
||
libxft2 \
|
||
libxinerama1 \
|
||
libxtst6 \
|
||
libappindicator3-1 \
|
||
libx11-xcb1 \
|
||
libxfixes3 \
|
||
xdg-utils \
|
||
&& apt-get clean \
|
||
&& rm -rf /var/lib/apt/lists/* \
|
||
&& rm -rf /tmp/* \
|
||
&& rm -rf /var/tmp/*
|
||
|
||
# 设置时区
|
||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||
|
||
# 验证Node.js安装并设置环境变量
|
||
RUN node --version && npm --version
|
||
ENV NODE_PATH=/usr/lib/node_modules
|
||
|
||
# 复制requirements.txt并安装Python依赖
|
||
COPY requirements.txt .
|
||
RUN pip install --no-cache-dir --upgrade pip && \
|
||
pip install --no-cache-dir -r requirements.txt
|
||
|
||
# 复制项目文件
|
||
COPY . .
|
||
|
||
# 安装Playwright浏览器(必须在复制项目文件之后)
|
||
RUN playwright install chromium && \
|
||
playwright install-deps chromium
|
||
|
||
# 创建必要的目录并设置权限
|
||
RUN mkdir -p /app/logs /app/data /app/backups && \
|
||
chmod 777 /app/logs /app/data /app/backups
|
||
|
||
# 注意: 为了简化权限问题,使用root用户运行
|
||
# 在生产环境中,建议配置适当的用户映射
|
||
|
||
# 暴露端口
|
||
EXPOSE 8080
|
||
|
||
# 健康检查
|
||
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
||
CMD curl -f http://localhost:8080/health || exit 1
|
||
|
||
# 创建启动脚本
|
||
COPY <<EOF /app/entrypoint.sh
|
||
#!/bin/bash
|
||
set -e
|
||
|
||
echo "🚀 启动闲鱼自动回复系统..."
|
||
echo "📊 数据库将在应用启动时自动初始化..."
|
||
echo "🎯 启动主应用..."
|
||
|
||
# 确保数据目录存在
|
||
mkdir -p /app/data /app/logs /app/backups
|
||
|
||
# 启动主应用
|
||
exec python Start.py
|
||
EOF
|
||
|
||
RUN chmod +x /app/entrypoint.sh
|
||
|
||
# 启动命令
|
||
CMD ["/app/entrypoint.sh"] |