HuggingFace0920 commited on
Commit
c80fe81
·
verified ·
1 Parent(s): e0ba8f0

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +20 -6
Dockerfile CHANGED
@@ -8,15 +8,26 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
8
  # 设置容器内的工作目录。所有后续命令都将在此目录中执行。
9
  WORKDIR /app
10
 
11
- # 确保安装了 wget,它是下载文件所需的工具。
12
  # ca-certificates 用于确保 HTTPS 连接的安全。
13
- RUN apt-get update && apt-get install -y --no-install-recommends wget ca-certificates && rm -rf /var/lib/apt/lists/*
14
 
15
  # 下载 OpenList 的最新 release 版本。
16
- # -q 用于静默下载(不显示进度)。
17
- # -O openlist-linux-amd64.tar.gz 明确指定下载后的文件名。
18
- # -L 用于跟随 HTTP 重定向,这对于 GitHub 的 latest/download URL 是必需的。
19
- RUN wget -q -O openlist-linux-amd64.tar.gz -L https://github.com/OpenListTeam/OpenList/releases/download/beta/openlist-linux-amd64.tar.gz
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  # 解压下载的 tarball,并确保 OpenList 可执行文件位于正确的位置并具有执行权限。
22
  # OpenList 的 Go 二进制文件解压后可能在子目录中(例如,一个名为 OpenList 的文件夹)。
@@ -29,6 +40,9 @@ RUN tar -xzf openlist-linux-amd64.tar.gz && \
29
  # 授予 'openlist' 二进制文件执行权限
30
  chmod +x ./openlist
31
 
 
 
 
32
  # 暴露应用程序监听的端口。OpenList 默认监听 5244 端口。
33
  EXPOSE 5244
34
 
 
8
  # 设置容器内的工作目录。所有后续命令都将在此目录中执行。
9
  WORKDIR /app
10
 
11
+ # 确保安装了 curl 和 jq,它们是用于从 GitHub API 获取下载链接的工具。
12
  # ca-certificates 用于确保 HTTPS 连接的安全。
13
+ RUN apt-get update && apt-get install -y --no-install-recommends curl jq ca-certificates && rm -rf /var/lib/apt/lists/*
14
 
15
  # 下载 OpenList 的最新 release 版本。
16
+ # 使用 GitHub API 获取最新 release 中文件名为 openlist-linux-amd64.tar.gz 的下载链接。
17
+ # jq 查询会查找名称中包含 "linux-amd64" 且以 ".tar.gz" 结尾的资产,并忽略大小写。
18
+ # 如果未找到 URL,则会输出错误并停止构建。
19
+ RUN LATEST_RELEASE_URL=$(curl -sL https://api.github.com/repos/OpenListTeam/OpenList/releases/latest | \
20
+ jq -r '.assets?[] | select(.name | test("openlist-linux-amd64.*\\.tar\\.gz$"; "i")) | .browser_download_url') && \
21
+ if [ -z "$LATEST_RELEASE_URL" ]; then \
22
+ echo "Error: Could not find 'openlist-linux-amd64.tar.gz' or similar asset in latest release assets via GitHub API." && \
23
+ # Fallback to direct download URL if API lookup fails, as a last resort
24
+ wget -q -O openlist-linux-amd64.tar.gz -L https://github.com/OpenListTeam/OpenList/releases/latest/download/beta/openlist-linux-amd64.tar.gz || \
25
+ (echo "Error: Direct download also failed. Cannot proceed." && exit 1); \
26
+ else \
27
+ echo "Downloading: openlist-linux-amd64.tar.gz from $LATEST_RELEASE_URL" && \
28
+ wget -q -O openlist-linux-amd64.tar.gz "$LATEST_RELEASE_URL"; \
29
+ fi
30
+
31
 
32
  # 解压下载的 tarball,并确保 OpenList 可执行文件位于正确的位置并具有执行权限。
33
  # OpenList 的 Go 二进制文件解压后可能在子目录中(例如,一个名为 OpenList 的文件夹)。
 
40
  # 授予 'openlist' 二进制文件执行权限
41
  chmod +x ./openlist
42
 
43
+ # 确保 /app 目录对容器内的运行用户具有写权限,以便应用可以创建其数据目录。
44
+ RUN chmod -R 777 /app
45
+
46
  # 暴露应用程序监听的端口。OpenList 默认监听 5244 端口。
47
  EXPOSE 5244
48