# ==================================== # 后端基础镜像 - Base Serv # 包含:JRE + Python + 系统工具 + 爬虫依赖 # 用途:作为后端服务镜像的基础,避免每次都安装依赖 # ==================================== FROM eclipse-temurin:21-jre # 设置环境变量 ENV LANG=C.UTF-8 \ LC_ALL=C.UTF-8 \ TZ=Asia/Shanghai \ PYTHONUNBUFFERED=1 \ PYTHONIOENCODING=UTF-8 \ PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple \ PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn # 安装系统依赖和工具 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ # Python环境 python3 \ python3-pip \ python3-venv \ python3-dev \ # 编译工具 build-essential \ # 网络和诊断工具 netcat-traditional \ curl \ wget \ dnsutils \ iputils-ping \ # 系统工具 procps \ htop \ vim \ less \ # 数据库客户端 default-mysql-client \ # 字体和图形库 fonts-liberation \ fonts-noto-color-emoji \ fonts-noto-cjk \ # Chrome依赖 libxss1 \ libx11-xcb1 \ libxcb1 \ libxcomposite1 \ libxcursor1 \ libxdamage1 \ libxi6 \ libxtst6 \ libnss3 \ libcups2 \ libxrandr2 \ libasound2t64 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libpangocairo-1.0-0 \ libgtk-3-0 \ # 图片处理 libjpeg-dev \ zlib1g-dev \ libpng-dev \ # 其他依赖 libffi-dev \ libssl-dev \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone # 设置Python3为默认Python RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 \ && update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 WORKDIR /app # 配置pip使用清华源 RUN mkdir -p /etc/pip && \ echo "[global]" > /etc/pip/pip.conf && \ echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> /etc/pip/pip.conf && \ echo "trusted-host = pypi.tuna.tsinghua.edu.cn" >> /etc/pip/pip.conf # 安装常用Python工具和爬虫依赖 COPY schoolNewsCrawler/requirements.txt /tmp/requirements.txt RUN echo "========================================" && \ echo "安装Python爬虫依赖到基础镜像" && \ echo "========================================" && \ # 直接安装依赖(使用系统pip,不升级以避免破坏系统) python3 -m pip install --no-cache-dir --break-system-packages -r /tmp/requirements.txt && \ # 清理缓存 python3 -m pip cache purge && \ # 验证安装 echo "" && \ echo "✅ 爬虫依赖安装完成" && \ python3 -m pip list | grep -E "(beautifulsoup4|crawl4ai|selenium|pydantic|requests|loguru)" && \ # 清理临时文件 rm -f /tmp/requirements.txt # 创建应用目录结构 RUN mkdir -p /app/config /app/logs /app/uploads /app/crawler # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8080/actuator/health || exit 1 # 镜像元数据 LABEL maintainer="School News Team" \ description="Base image for school-news backend service with Python dependencies" \ version="1.0" # 暴露端口(文档用途) EXPOSE 8081 # 默认命令(会被子镜像覆盖) CMD ["echo", "This is base image, please use school-news-serv image"]