Mr.L
commited on
Commit
·
5ada0cb
1
Parent(s):
a480a9a
feat: add Dockerfile, entrypoint.sh and .env.example
Browse files- .env.example +30 -0
- Dockerfile +35 -0
- README.md +1 -1
- 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 |
-
|
|
|
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
|