File size: 1,041 Bytes
d7f0819
9d0dc75
85682af
d7f0819
80fb89a
ef744f4
d7f0819
 
437a1f7
d7f0819
5dcc43c
9d0dc75
d7f0819
2b1951e
d7f0819
 
 
 
ef744f4
d7f0819
437a1f7
5dcc43c
d7f0819
 
 
 
437a1f7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 使用官方镜像,获取可执行文件
FROM adguard/adguardhome:latest

# 在构建时,我们仍然需要 root 权限来创建目录和设置权限
USER root

# 1. 在唯一可能写入的 /tmp 目录中创建我们的工作区
RUN mkdir -p /tmp/adguard/work /tmp/adguard/conf

# 2. 在这个 "安全区" 中创建配置文件以绕过 Bug
RUN printf 'bind_host: 0.0.0.0\n\
bind_port: 3000\n\
schema_version: 29\n' > /tmp/adguard/conf/AdGuardHome.yaml

# 3. 关键中的关键!将这个目录的权限设置为 777 (任何人都可以读写)
#    这是为了让那个由 Hugging Face 强制指定的、我们不认识的随机用户,
#    也能够拥有写入这个目录的权限。
RUN chmod -R 777 /tmp/adguard

# 4. 我们不需要 VOLUME,只需要暴露端口
EXPOSE 3000

# 5. 启动命令,所有路径都指向 /tmp 下的 "安全区"
#    CMD 中不包含可执行文件名,因为它在 ENTRYPOINT 中
CMD ["-c", "/tmp/adguard/conf/AdGuardHome.yaml", \
     "-w", "/tmp/adguard/work", \
     "--no-check-update"]