Spaces:
Paused
Paused
| # 使用一个基础镜像。 | |
| FROM alpine:latest | |
| # 1. 设置时区 | |
| ENV TZ=Asia/Shanghai | |
| RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | |
| # 设置工作目录 | |
| WORKDIR /app | |
| # 2. 获取 OpenList 二进制文件 | |
| # 安装 curl 和 jq 用于从 GitHub API 获取最新的下载链接 | |
| RUN apk add --no-cache curl jq | |
| # 使用 GitHub API 获取最新 release 的下载链接 | |
| # 尝试更通用的匹配模式,查找名称中包含 "linux-amd64" 且以 ".tar.gz" 结尾的资产 | |
| RUN LATEST_RELEASE_URL=$(curl -sL https://api.github.com/repos/OpenListTeam/OpenList/releases/latest | \ | |
| jq -r '.assets?[] | select(.name | test("linux-amd64.*\\.tar\\.gz$")) | .browser_download_url') && \ | |
| if [ -z "$LATEST_RELEASE_URL" ]; then \ | |
| echo "Error: Could not find a suitable 'linux-amd64*.tar.gz' asset in latest release assets." && \ | |
| # Fallback: Try to find any .tar.gz if specific match fails (less ideal, but robust) | |
| LATEST_RELEASE_URL=$(curl -sL https://api.github.com/repos/OpenListTeam/OpenList/releases/latest | \ | |
| jq -r '.assets?[] | select(.name | test(".*\\.tar\\.gz$")) | .browser_download_url | .[0]') && \ | |
| if [ -z "$LATEST_RELEASE_URL" ]; then \ | |
| echo "Error: No .tar.gz asset found at all in latest release." && exit 1; \ | |
| else \ | |
| echo "Warning: Specific 'linux-amd64' asset not found. Attempting to download generic .tar.gz." \ | |
| fi \ | |
| fi && \ | |
| wget -q -O openlist-linux-amd64.tar.gz "$LATEST_RELEASE_URL" | |
| # 3. 解压并授予执行权限 | |
| RUN tar -xzf openlist-linux-amd64.tar.gz | |
| # 授予下载的 openlist 二进制文件执行权限 | |
| RUN chmod +x openlist | |
| # 4. 运行 OpenList 服务器 | |
| # 设置容器启动时执行的命令 | |
| CMD ["./openlist", "server"] | |
| # OpenList 监听端口 | |
| EXPOSE 5244 | |