docker初步构想
This commit is contained in:
118
docker/example/Dockerfile.base-serv
Normal file
118
docker/example/Dockerfile.base-serv
Normal file
@@ -0,0 +1,118 @@
|
||||
# ====================================
|
||||
# 后端基础镜像 - 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"]
|
||||
Reference in New Issue
Block a user