# 使用官方Ubuntu基础镜像 FROM ubuntu:22.04 # 设置构建参数 ARG TZ=Asia/Shanghai ARG APP_USER=reader ARG APP_HOME=/app ARG JAVA_VERSION=17 # 设置环境变量 ENV TZ=${TZ} \ JAVA_HOME=/usr/lib/jvm/java-${JAVA_VERSION}-openjdk-amd64 \ APP_USER=${APP_USER} \ APP_HOME=${APP_HOME} \ VIRTUAL_ENV=${APP_HOME}/venv \ PATH="${APP_HOME}/venv/bin:${JAVA_HOME}/bin:${PATH}" \ LANG=C.UTF-8 \ LC_ALL=C.UTF-8 # 安装依赖并配置环境 RUN set -eux; \ # 设置时区 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \ echo $TZ > /etc/timezone; \ \ # 更新包索引并安装基本依赖 apt-get update; \ apt-get install -y --no-install-recommends \ openjdk-${JAVA_VERSION}-jdk \ ca-certificates \ curl \ unzip \ bash \ jq \ python3 \ python3-pip \ python3-venv; \ \ # 清理APT缓存以减小镜像体积 apt-get clean; \ rm -rf /var/lib/apt/lists/*; \ \ # 更新CA证书 update-ca-certificates; \ \ # 创建应用用户和目录 useradd -r -u 1000 -m -d $APP_HOME -s /bin/bash $APP_USER; \ chown -R $APP_USER:$APP_USER $APP_HOME; \ \ # 创建Python虚拟环境并安装依赖 python3 -m venv $VIRTUAL_ENV; \ pip install --no-cache-dir --upgrade pip setuptools wheel; \ pip install --no-cache-dir huggingface_hub # 设置工作目录和用户 WORKDIR $APP_HOME USER $APP_USER # 复制并设置脚本权限 COPY --chown=${APP_USER}:${APP_USER} install_reader.sh ./ COPY --chown=${APP_USER}:${APP_USER} sync_data.sh ./ RUN chmod +x install_reader.sh sync_data.sh # 暴露服务端口 EXPOSE 8080 # 使用exec形式的ENTRYPOINT以确保信号正确传递 ENTRYPOINT ["/bin/bash", "-c"] CMD ["./sync_data.sh"]