Update Dockerfile
Browse files- 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 |
-
# 确保安装了
|
12 |
# ca-certificates 用于确保 HTTPS 连接的安全。
|
13 |
-
RUN apt-get update && apt-get install -y --no-install-recommends
|
14 |
|
15 |
# 下载 OpenList 的最新 release 版本。
|
16 |
-
# -
|
17 |
-
#
|
18 |
-
#
|
19 |
-
RUN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|