File size: 2,110 Bytes
9dc20be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 使用官方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"]