yangtb24 commited on
Commit
2b1951e
·
verified ·
1 Parent(s): a7cdd8b

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +33 -8
Dockerfile CHANGED
@@ -1,17 +1,42 @@
1
- # 使用 AdGuard Home 官方的最新镜像
2
- FROM adguard/adguardhome:latest
3
 
4
- # 关键修正 1: 强制切换到 root 用户。
5
- # 这将覆盖官方镜像默认的低权限用户,解决所有 "permission denied" 问题。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  USER root
7
 
8
- # 标准的持久化卷和端口声明
9
  VOLUME ["/opt/adguardhome/work", "/opt/adguardhome/conf"]
 
 
10
  EXPOSE 53/udp 3000/tcp 80/tcp 443/tcp 853/tcp
11
 
12
- # 关键修正 2: CMD 只提供参数,绝不包含可执行文件名。
13
- # 这些参数会被追加到官方镜像的 ENTRYPOINT 后面,形成一个完整、正确的命令。
14
- CMD ["--no-check-update", \
 
 
 
15
  "--web-addr", "0.0.0.0:3000", \
16
  "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", \
17
  "-w", "/opt/adguardhome/work"]
 
1
+ # 阶段 1: 从官方镜像获取可执行文件
2
+ FROM adguard/adguardhome:latest as builder
3
 
4
+ # 阶段 2: 使用一个标准的、干净的基础镜像
5
+ FROM debian:bullseye-slim
6
+
7
+ # 设置一些环境变量,避免在安装时出现交互式提示
8
+ ENV DEBIAN_FRONTEND=noninteractive
9
+
10
+ # 更新软件包列表并安装 curl 和 ca-certificates
11
+ RUN apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
12
+
13
+ # 从阶段 1 (builder) 复制 AdGuard Home 的可执行文件
14
+ COPY --from=builder /opt/adguardhome/AdGuardHome /opt/adguardhome/AdGuardHome
15
+
16
+ # --- 关键的权限准备步骤 ---
17
+ # 定义工作和配置目录
18
+ ENV AGH_WORK_DIR=/opt/adguardhome/work
19
+ ENV AGH_CONF_DIR=/opt/adguardhome/conf
20
+
21
+ # 1. 以 root 身份创建工作目录和配置目录
22
+ RUN mkdir -p ${AGH_WORK_DIR} ${AGH_CONF_DIR}
23
+
24
+ # --- 运行配置 ---
25
+ # 明确我们正在使用 root 用户 (虽然是默认的,但显式声明更清晰)
26
  USER root
27
 
28
+ # 声明持久化卷
29
  VOLUME ["/opt/adguardhome/work", "/opt/adguardhome/conf"]
30
+
31
+ # 声明端口
32
  EXPOSE 53/udp 3000/tcp 80/tcp 443/tcp 853/tcp
33
 
34
+ # 定义最终的启动命令
35
+ # 我们使用 root 身份运行,并且添加了 --no-permcheck 参数作为双重保险
36
+ # 这个参数在这种情况下可能多余,但加上无害,可以应对任何意外的权限检查逻辑
37
+ CMD ["/opt/adguardhome/AdGuardHome", \
38
+ "--no-check-update", \
39
+ "--no-permcheck", \
40
  "--web-addr", "0.0.0.0:3000", \
41
  "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", \
42
  "-w", "/opt/adguardhome/work"]