Spaces:
Paused
Paused
| # 使用官方Ubuntu基础镜像 | |
| FROM ubuntu:22.04 | |
| # 设置构建参数 | |
| ARG TZ=Asia/Shanghai | |
| ARG APP_USER=suwayomi | |
| ARG APP_HOME=/home/suwayomi | |
| ARG JAVA_VERSION=21 | |
| # 设置环境变量 | |
| 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 \ | |
| dos2unix; \ | |
| \ | |
| # 清理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; \ | |
| \ | |
| # 下载 Suwayomi-Server 最新 release | |
| curl -L -o $APP_HOME/Suwayomi-Server.jar \ | |
| $(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | jq -r '.assets[] | select(.name | test("Suwayomi-Server.*\\.jar$")) | .browser_download_url') | |
| # 设置工作目录和用户 | |
| WORKDIR $APP_HOME | |
| USER $APP_USER | |
| # 复制并设置脚本权限 | |
| COPY --chown=${APP_USER}:${APP_USER} sync_data.sh ./ | |
| RUN dos2unix sync_data.sh && chmod +x sync_data.sh | |
| # 暴露服务端口 | |
| EXPOSE 4567 | |
| # 使用exec形式的ENTRYPOINT以确保信号正确传递 | |
| ENTRYPOINT ["/bin/bash", "-c"] | |
| CMD ["./sync_data.sh && exec java -jar ./Suwayomi-Server.jar"] |