Update Dockerfile
Browse files- Dockerfile +33 -8
Dockerfile
CHANGED
@@ -1,17 +1,42 @@
|
|
1 |
-
#
|
2 |
-
FROM adguard/adguardhome:latest
|
3 |
|
4 |
-
#
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
#
|
13 |
-
#
|
14 |
-
|
|
|
|
|
|
|
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"]
|