Update Dockerfile
Browse files- Dockerfile +14 -34
Dockerfile
CHANGED
@@ -1,42 +1,22 @@
|
|
1 |
-
#
|
2 |
-
FROM adguard/adguardhome:latest
|
3 |
|
4 |
-
#
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
-
#
|
|
|
32 |
EXPOSE 53/udp 3000/tcp 80/tcp 443/tcp 853/tcp
|
33 |
|
34 |
-
#
|
35 |
-
|
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"]
|