HuggingFace0920 commited on
Commit
e668e78
·
verified ·
1 Parent(s): 5488d24

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +32 -32
Dockerfile CHANGED
@@ -1,37 +1,37 @@
1
- # 使用一个基础镜像。
2
- FROM alpine:latest
3
 
4
- # 1. 设置时区
5
  ENV TZ=Asia/Shanghai
6
  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
7
 
8
- # 设置工作目录
9
- WORKDIR /
10
-
11
- # 2. 获取 OpenList 二进制文件
12
- # wget 可能未预装,所以先安装它和 ca-certificates
13
- RUN apk add --no-cache wget ca-certificates
14
-
15
- # 下载 OpenList 的最新 release 版本
16
- RUN wget -q -O openlist-linux-amd64.tar.gz -L https://github.com/OpenListTeam/OpenList/releases/download/beta/openlist-linux-amd64.tar.gz
17
-
18
- # 3. 解压并授予执行权限
19
- RUN tar -xzf openlist-linux-amd64.tar.gz
20
-
21
- # 检查解压后的文件,并将其移动到 /app 目录下,并确保它是可执行的
22
- # 通常,Go 应用的二进制文件解压后可能在子目录中或名称略有不同
23
- # 我们需要找到它并确保它在正确的路径下且具有执行权限
24
- # 假设解压后,OpenList 的可执行文件名为 'openlist' 且可能位于一个子目录中
25
- # 这里我们尝试查找它,如果找到就移动它
26
- RUN sh -c "if [ -f ./openlist ]; then echo 'openlist found in root'; \
27
- elif [ -f OpenList/openlist ]; then mv OpenList/openlist . && rm -rf OpenList; echo 'openlist found in OpenList dir'; \
28
- elif find . -name 'openlist*' -type f -exec mv {} . \; then echo 'openlist found in subdir and moved'; \
29
- else echo 'Error: openlist executable not found after extraction.' && exit 1; fi" \
30
- && chmod +x ./openlist
31
-
32
- # 4. 运行 OpenList 服务器
33
- # 设置容器启动时执行的命令
 
 
 
34
  CMD ["./openlist", "server"]
35
-
36
- # OpenList 监听端口
37
- EXPOSE 5244
 
1
+ # 使用 Ubuntu 22.04 作为基础镜像,它是一个稳定且常用的 Linux 发行版。
2
+ FROM ubuntu:22.04
3
 
4
+ # 设置时区
5
  ENV TZ=Asia/Shanghai
6
  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
7
 
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/latest/download/openlist-linux-amd64.tar.gz
20
+
21
+ # 解压下载的 tarball,并确保 OpenList 可执行文件位于正确的位置并具有执行权限。
22
+ # OpenList 的 Go 二进制文件解压后可能在子目录中(例如,一个名为 OpenList 的文件夹)。
23
+ # 此命令会检查几种常见的解压情况,并将实际的 'openlist' 二进制文件移动到 /app 目录下。
24
+ RUN tar -xzf openlist-linux-amd64.tar.gz && \
25
+ # 尝试将可执行文件移动到 /app 目录的根部
26
+ (mv OpenList/openlist . || mv openlist . || find . -type f -name "openlist*" -exec mv {} . \;) && \
27
+ # 清理可能存在的 OpenList 子目录,避免不必要的空间占用
28
+ rm -rf OpenList && \
29
+ # 授予 'openlist' 二进制文件执行权限
30
+ chmod +x ./openlist
31
+
32
+ # 暴露应用程序监听的端口。OpenList 默认监听 5244 端口。
33
+ EXPOSE 5244
34
+
35
+ # 设置容器启动时执行的默认命令。
36
+ # 这是运行 OpenList 服务器的实际命令。
37
  CMD ["./openlist", "server"]