Update Dockerfile
Browse files- Dockerfile +15 -14
Dockerfile
CHANGED
|
@@ -1,26 +1,27 @@
|
|
| 1 |
-
# 使用官方镜像,
|
| 2 |
FROM adguard/adguardhome:latest
|
| 3 |
|
| 4 |
-
#
|
| 5 |
USER root
|
| 6 |
|
| 7 |
-
# 1. 在
|
| 8 |
-
|
| 9 |
-
RUN mkdir -p /data/work /data/conf
|
| 10 |
|
| 11 |
-
# 2. 在这个
|
| 12 |
-
# 使用 printf 确保 YAML 格式正确。
|
| 13 |
RUN printf 'bind_host: 0.0.0.0\n\
|
| 14 |
bind_port: 3000\n\
|
| 15 |
-
schema_version: 29\n' > /
|
| 16 |
|
| 17 |
-
# 3. 关键
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
-
# 4. 只需要暴露
|
| 20 |
EXPOSE 3000
|
| 21 |
|
| 22 |
-
# 5. 启动命令,
|
| 23 |
-
#
|
| 24 |
-
CMD ["-c", "/
|
| 25 |
-
"-w", "/
|
| 26 |
"--no-check-update"]
|
|
|
|
| 1 |
+
# 使用官方镜像,获取可执行文件
|
| 2 |
FROM adguard/adguardhome:latest
|
| 3 |
|
| 4 |
+
# 在构建时,我们仍然需要 root 权限来创建目录和设置权限
|
| 5 |
USER root
|
| 6 |
|
| 7 |
+
# 1. 在唯一可能写入的 /tmp 目录中创建我们的工作区
|
| 8 |
+
RUN mkdir -p /tmp/adguard/work /tmp/adguard/conf
|
|
|
|
| 9 |
|
| 10 |
+
# 2. 在这个 "安全区" 中创建配置文件以绕过 Bug
|
|
|
|
| 11 |
RUN printf 'bind_host: 0.0.0.0\n\
|
| 12 |
bind_port: 3000\n\
|
| 13 |
+
schema_version: 29\n' > /tmp/adguard/conf/AdGuardHome.yaml
|
| 14 |
|
| 15 |
+
# 3. 关键中的关键!将这个目录的权限设置为 777 (任何人都可以读写)
|
| 16 |
+
# 这是为了让那个由 Hugging Face 强制指定的、我们不认识的随机用户,
|
| 17 |
+
# 也能够拥有写入这个目录的权限。
|
| 18 |
+
RUN chmod -R 777 /tmp/adguard
|
| 19 |
|
| 20 |
+
# 4. 我们不需要 VOLUME,只需要暴露端口
|
| 21 |
EXPOSE 3000
|
| 22 |
|
| 23 |
+
# 5. 启动命令,所有路径都指向 /tmp 下的 "安全区"
|
| 24 |
+
# CMD 中不包含可执行文件名,因为它在 ENTRYPOINT 中
|
| 25 |
+
CMD ["-c", "/tmp/adguard/conf/AdGuardHome.yaml", \
|
| 26 |
+
"-w", "/tmp/adguard/work", \
|
| 27 |
"--no-check-update"]
|