123 lines
3.5 KiB
Plaintext
123 lines
3.5 KiB
Plaintext
# 使用Python 3.11作为基础镜像
|
|
# 支持通过构建参数指定镜像源(解决多架构构建时的网络问题)
|
|
# 使用方法:docker build --build-arg BASE_IMAGE=ccr.ccs.tencentyun.com/dockerp/library/python:3.11-slim-bookworm
|
|
ARG BASE_IMAGE=python:3.11-slim-bookworm
|
|
FROM ${BASE_IMAGE}
|
|
|
|
# 设置标签信息
|
|
LABEL maintainer="GuDong2003"
|
|
LABEL version="2.1.0"
|
|
LABEL description="闲鱼管理系统 - GuDong2003 维护版本,支持多用户、多账号与自动化管理"
|
|
LABEL repository="https://github.com/GuDong2003/xianyu-auto-reply-fix"
|
|
LABEL license="仅供学习与研究使用,禁止商业用途"
|
|
LABEL author="GuDong2003"
|
|
LABEL build-date=""
|
|
LABEL vcs-ref=""
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 设置环境变量
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
ENV TZ=Asia/Shanghai
|
|
ENV DOCKER_ENV=true
|
|
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
|
|
|
|
#更换中科大源
|
|
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
|
|
|
|
# 安装系统依赖(包括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 \
|
|
chromium \
|
|
# OpenCV运行时依赖
|
|
libgl1 \
|
|
libglib2.0-0 \
|
|
&& 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 -i https://pypi.tuna.tsinghua.edu.cn/simple&& \
|
|
pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
|
|
# 复制项目文件
|
|
COPY . .
|
|
|
|
# 安装Playwright浏览器(必须在复制项目文件之后)
|
|
RUN playwright install chromium && \
|
|
playwright install-deps chromium
|
|
|
|
# 创建必要的目录并设置权限
|
|
RUN mkdir -p /app/logs /app/data /app/backups /app/static/uploads/images && \
|
|
chmod 777 /app/logs /app/data /app/backups /app/static/uploads /app/static/uploads/images
|
|
|
|
# 配置系统限制,防止core文件生成
|
|
RUN echo "ulimit -c 0" >> /etc/profile
|
|
|
|
# 注意: 为了简化权限问题,使用root用户运行
|
|
# 在生产环境中,建议配置适当的用户映射
|
|
|
|
# 暴露端口
|
|
EXPOSE 8090
|
|
|
|
# 健康检查
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD curl -f http://localhost:8090/health || exit 1
|
|
|
|
# 复制启动脚本
|
|
COPY entrypoint.sh /app/entrypoint.sh
|
|
RUN chmod +x /app/entrypoint.sh
|
|
|
|
# 启动命令
|
|
CMD ["/app/entrypoint.sh"]
|