如何用Docker覆盖configuration文件
我有一个Docker项目,具有以下结构:
. ├── config └── Dockerfile
Dockerfile
位置
FROM alpine:latest EXPOSE 8118 RUN apk --update add privoxy COPY config /etc/privoxy/config CMD ["privoxy", "--no-daemon"]
config
包含两行
listen-address 0.0.0.0:8118 forward-socks5 / tor:9050 .
在容器中,我想将Privoxyconfiguration文件(其默认位置是/etc/privoxy
(参见https://www.privoxy.org/user-manual/config.html )放到“本地' config
文件,这是我想要实现与COPY
指令。
但是,如果我docker build --tag my_privoxy .
其次是docker run my_privoxy
,我看到以下错误信息:
2017-05-02 10:40:29.371 7f2ce5f00b48 Info: Privoxy version 3.0.24 2017-05-02 10:40:29.371 7f2ce5f00b48 Info: Program name: privoxy 2017-05-02 10:40:29.371 7f2ce5f00b48 Fatal error: can't check configuration file '//config': Invalid argument
我没有看到configuration文件的预期位置如何在容器中以'//config'
结束; 在我看来,使用COPY
与https://docs.docker.com/engine/reference/builder/#copy一致。 上面的Dockerfile
什么问题?
是/etc/privoxy/config
一个目录? 如果没有,那么你的命令应该是这样的
COPY config /etc/privoxy/
根据privoxy --help
,该命令接受一个[configfile]
可选input。 所以我把最后一行改成了
CMD ["privoxy", "--no-daemon", "/etc/privoxy/config"]
它的工作。 (我仍然不明白为什么没有configuration文件input工作,因为/etc/privoxy/config
应该是默认的)。
在容器中,我想制作Privoxyconfiguration文件
您可以使用所需的configuration将卷挂载到文件夹中。 这将与docker run -v hostFolder:containerFolder imagename
。 然而,这不会导致与configuration新的形象,而是你会得到一个容器与你想要的configuration。