62 lines
2.0 KiB
Docker
62 lines
2.0 KiB
Docker
# ====================================
|
||
# 后端基础镜像 - Base Serv
|
||
# 包含:JRE + Python + 系统工具 + 爬虫依赖
|
||
# 用途:作为后端服务镜像的基础,避免每次都安装依赖
|
||
# ====================================
|
||
FROM eclipse-temurin:21-jre
|
||
|
||
# 设置环境变量
|
||
ENV LANG=C.UTF-8 \
|
||
LC_ALL=C.UTF-8 \
|
||
TZ=Asia/Shanghai
|
||
|
||
# 安装系统依赖和工具
|
||
RUN apt-get update && \
|
||
apt-get install -y \
|
||
# Python环境
|
||
python3 \
|
||
python3-pip \
|
||
python3-venv \
|
||
# 网络和诊断工具
|
||
netcat-traditional \
|
||
curl \
|
||
wget \
|
||
# MySQL客户端
|
||
default-mysql-client \
|
||
&& apt-get clean \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# 临时复制requirements.txt用于安装依赖
|
||
COPY schoolNewsCrawler/requirements.txt /tmp/requirements.txt
|
||
|
||
# 安装Python爬虫依赖(一次性安装到基础镜像)
|
||
RUN echo "========================================" && \
|
||
echo "安装Python爬虫依赖到基础镜像" && \
|
||
echo "========================================" && \
|
||
# 配置pip使用国内镜像源(清华源)
|
||
python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
|
||
python3 -m pip --version && \
|
||
echo "" && \
|
||
# Python 3.12 引入了 PEP 668 规范,需要添加 --break-system-packages
|
||
python3 -m pip install --no-cache-dir --break-system-packages -r /tmp/requirements.txt && \
|
||
echo "" && \
|
||
echo "✅ 爬虫依赖安装完成" && \
|
||
python3 -m pip list | grep -E "(beautifulsoup4|crawl4ai|selenium|pydantic|requests|loguru)" && \
|
||
# 清理临时文件
|
||
rm -f /tmp/requirements.txt
|
||
|
||
# 创建应用目录结构
|
||
WORKDIR /app
|
||
RUN mkdir -p /app/config /app/logs /app/uploads /app/crawler
|
||
|
||
# 镜像元数据
|
||
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"]
|