容器中的Dockerfile文件

qoefvg9y  于 8个月前  发布在  Docker
关注(0)|答案(3)|浏览(92)

我知道这写得很草率,但我是Docker的新手,只是想掌握它的窍门。我拉了一个镜像FROM wordpress:4.9.2-php7.2-apache Im,然后试图从我的Dockerfile中覆盖deflate.conf文件。我使用的命令如下。

ADD /deflate.conf ../../../etc/apache2/mods-available/

字符串
使用这个命令,镜像可以正常构建,但是我一运行它,容器就立即失败了?
当我注解掉ADD行和build/run镜像时,容器运行正常。所以我尝试从命令行复制命令,如下所示:

docker cp deflate.conf <name>:../../../etc/apache2/mods-available/deflate.conf


使用这个命令一切都很好,我得到了想要的结果。
我不知道为什么我的Dockerfile不能工作,但命令行可以。任何帮助都将不胜感激。

jrcvhitl

jrcvhitl1#

为什么不使用COPY或ADD与绝对路径。而不是使用../../../etc/apache2/mods-available/deflate.conf,格式应该是:

COPY /deflate.conf /etc/apache2/mods-available/deflate.conf

字符串
您也可以使用Docker卷来实现这一点。在docker build期间忽略COPY,然后使用runcommand,包括-v选项:

$ docker run -v  /deflate.conf:/etc/apache2/mods-available/deflate.conf -d -p 80:80 test


请注意,当apache服务启动时,/etc/apache2/mods-available/上的模块默认不会加载,活动模块应该复制到/etc/apache2/mods-enabled/

7rtdyuoh

7rtdyuoh2#

我认为与命令行相同的结果,你可以实现:

COPY /deflate.conf ../../../etc/apache2/mods-available/deflate.conf

字符串
在你的Dockerfile里

bogh5gae

bogh5gae3#

Dockerfile文档:

复制遵循以下规则:

路径必须在构建的上下文中;*你不能 COPY../something /something,因为Docker构建的第一步是将上下文目录(和子目录)发送到Docker守护进程。
ADD也是如此:

ADD遵循以下规则:

路径必须在构建的上下文内;你不能ADD**../something /something**,因为Docker构建的第一步是将上下文目录(和子目录)发送到Docker守护进程。
因此,如果你想使用dockerfile将某些内容从本地复制到容器中,请确保该文件位于dockerfile的同一目录或目录下。
我不知道你想干什么
docker cp deflate.conf <name>:../../../etc/apache2/mods-available/deflate.conf
据我所知,你想复制deflate.conf到你的容器中的那个路径,但为什么你在/etc之前使用../../..,我的意思是你可以直接复制到那个路径,就像这样:
docker cp deflate.conf <containerName>:/etc/apache2/mods-available/deflate.conf

相关问题