Mr.L commited on
Commit
5ada0cb
·
1 Parent(s): a480a9a

feat: add Dockerfile, entrypoint.sh and .env.example

Browse files
Files changed (4) hide show
  1. .env.example +30 -0
  2. Dockerfile +35 -0
  3. README.md +1 -1
  4. entrypoint.sh +28 -0
.env.example ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ########################################
2
+ # Hugging Face Space 示例环境变量
3
+ # 仅远程MySQL数据库,无本地SQLite等,所有配置均使用 ENV 注入
4
+ ########################################
5
+
6
+ # [必填] 监听端口,被 Space 探测用,强烈建议 7860(默认已固定脚本为7860,无特殊需求无需更改)
7
+ PORT=7860
8
+
9
+ # [必填] 数据库类型,固定为mysql,entrypoint已自动设定
10
+ # DB_TYPE=mysql
11
+
12
+ # [二选一] 推荐关键参数按字段配置(推荐直接在Space设置获取安全性)
13
+ DB_HOST=your.mysql.host
14
+ DB_PORT=3306
15
+ DB_USER=alistuser
16
+ DB_PASS=secret_pass
17
+ DB_NAME=alistdb
18
+
19
+ # 或 [可选,高级] 直接传完整 MySQL DSN 字符串(优先级更高,不需要上面DB_*)
20
+ # 格式:user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local
21
+ # DB_DSN=alistuser:secret_pass@tcp(your.mysql.host:3306)/alistdb?charset=utf8mb4&parseTime=True&loc=Local
22
+
23
+ # [可选] 管理员初始密码(推荐仅首次启动,如已有数据库会跳过)
24
+ # ALIST_ADMIN_PASSWORD=your-admin-password
25
+
26
+ ########################################
27
+ # 注意:
28
+ # - 禁止使用 SQLite,本模板仅支持远程MySQL。
29
+ # - 所有敏感信息仅在 Space 控制台填写,不要同步到公有仓库。
30
+ ########################################
Dockerfile ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 用于 Hugging Face Space 部署的alists主Dockerfile
2
+ FROM golang:1.21-alpine AS build
3
+
4
+ WORKDIR /build
5
+
6
+ COPY . .
7
+
8
+ RUN apk add --no-cache git && \
9
+ go mod download && \
10
+ CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /app/alist main.go
11
+
12
+ # 生产阶段
13
+ FROM alpine:3.19
14
+
15
+ WORKDIR /app
16
+
17
+ # 拷贝可执行文件和入口脚本
18
+ COPY --from=build /app/alist /app/alist
19
+ COPY entrypoint.sh /app/entrypoint.sh
20
+
21
+ # 可选:拷贝必要的静态资源等,如果需要可用以下行
22
+ # COPY public /app/public
23
+ # COPY config /app/config
24
+
25
+ # 必须赋予启动脚本可执行
26
+ RUN chmod +x /app/entrypoint.sh
27
+
28
+ # 端口,Hugging Face Space 默认探测
29
+ EXPOSE 7860
30
+
31
+ # HEALTHCHECK:确保平台探测健康,默认 get /ping (alist部分版本支持)可按需调整
32
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD wget -qO- http://localhost:7860/ping || exit 1
33
+
34
+ # 入口
35
+ ENTRYPOINT ["/app/entrypoint.sh"]
README.md CHANGED
@@ -1 +1 @@
1
- # alist for Hugging Face Space
 
1
+ sdk: docker
entrypoint.sh ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ RED='\033[0;31m'
6
+ NC='\033[0m' # No Color
7
+
8
+ # 默认端口
9
+ PORT=${PORT:-7860}
10
+ export HTTP_PORT=${PORT}
11
+ export DB_TYPE=mysql
12
+
13
+ echo "Using PORT=${HTTP_PORT} for Hugging Face Space"
14
+
15
+ # 校验 MySQL 连接参数,优先DSN
16
+ if [ -n "$DB_DSN" ]; then
17
+ echo "Using custom DB_DSN for MySQL connection."
18
+ elif [ -z "$DB_HOST" ] || [ -z "$DB_PORT" ] || [ -z "$DB_USER" ] || [ -z "$DB_PASS" ] || [ -z "$DB_NAME" ]; then
19
+ echo "${RED}ERROR: 必须设置 MySQL 数据库环境变量(DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME),或 DB_DSN!${NC}"
20
+ exit 1
21
+ fi
22
+
23
+ # 日志文件夹可选创建,也可用 docker 挂载
24
+ mkdir -p /app/data/log
25
+
26
+ # 启动 alist,日志直接前台输出
27
+ echo "Starting alist server ..."
28
+ exec /app/alist server --no-prefix