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

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +14 -34
Dockerfile CHANGED
@@ -1,42 +1,22 @@
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"]
 
1
+ # 使用官方镜像,我们依然需要它的可执行文件
2
+ FROM adguard/adguardhome:latest
3
 
4
+ # 强制切换到 root 用户,确保有权限执行所有操作
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  USER root
6
 
7
+ # --- 关键的 Workaround ---
8
+ # 我们在构建镜像时,就手动创建一个最小化的、有效的配置文件。
9
+ # 这会骗过 AdGuard Home,让它以为自己不是第一次启动,从而绕过有 Bug 的权限检查。
10
+ # 这个配置指定了 Web UI 监听我们需要的 3000 端口。
11
+ RUN echo 'bind_host: 0.0.0.0\n\
12
+ bind_port: 3000\n\
13
+ schema_version: 29' > /opt/adguardhome/conf/AdGuardHome.yaml
14
 
15
+ # 声明持久化卷和端口
16
+ VOLUME ["/opt/adguardhome/work", "/opt/adguardhome/conf"]
17
  EXPOSE 53/udp 3000/tcp 80/tcp 443/tcp 853/tcp
18
 
19
+ # 最终的启动命令,只提供参数
20
+ CMD ["--no-check-update", \
 
 
 
 
 
21
  "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", \
22
  "-w", "/opt/adguardhome/work"]