Spaces:
Paused
Paused
| # 使用官方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"] |