我正在尝试将我的文件移动到apache镜像的htdocs文件夹中。这是我的dockerfile的样子:
FROM httpd:2.4
MAINTAINER Ankit
COPY ./public-html/ /usr/local/apache2/htdocs/但是COPY命令不会将文件复制到容器中。下面是默认情况下的输出- index.html文件夹,我尝试复制的是public-html文件夹:
root@8453b6ffa6fd:/usr/local/apache2/htdocs# ls
index.html我是不是漏掉了什么?
更新:公共html文件夹没有被复制,但是文件index.html被复制到那里,出现这种行为的原因是什么?
UPDATE2:这是我最新的dockerfile,用于构建和运行容器的命令。
Dockerfile:
FROM httpd:2.4
MAINTAINER Ankit
COPY public-html/ /usr/local/apache2/htdocs/public-html/
docker build -f Dockerfile -t apache .
docker run -d --name apws -v /Users/ankitsahu/workspace/docker_practi
ce/public-html:/usr/local/apache2/htdocs/ -p 80:80 apache当我使用exec命令检查内容时:
root@b54e53a231b7:/usr/local/apache2/htdocs# ls -a
. .. index.html sample.html try发布于 2017-07-31 01:08:48
如果您尝试将目录public-html复制到/usr/local/apache2/htdocs目录中以创建.../htdocs/public-html/目录,请使用以下命令:
COPY public-html/ /usr/local/apache2/htdocs/public-html/默认情况下,复制目录将复制该目录的内容,因此您需要在目标中对其进行命名,才能显示该目录。
编辑:您的run命令包含一个卷,该卷将替换此目录的映像内容:
docker run -d --name apws -v /Users/ankitsahu/workspace/docker_practice/public-html:/usr/local/apache2/htdocs/ -p 80:80 apache如果您想要查看图像内部的内容,请不要使用卷:
docker run -d --name apws -p 80:80 apache如果您想要使用该卷,请在docker主机上修改/Users/ankitsahu/workspace/docker_practice/public-html的内容。
发布于 2017-07-31 00:01:40
在您可以将文件COPY到根目录之外的其他目录之前,您必须创建它们。
将Dockerfile更新为以下内容
FROM httpd:2.4 MAINTAINER Ankit
MKDIR -p /usr/local/apache2/htdocs/ # Create the directory with '-p' option.
COPY ./public-html/ /usr/local/apache2/htdocs/编辑1
根据文档Docker CP Command,如果
DEST_PATH存在并且是一个目录,并且如果
SRC_PATH不会以/结尾。(即:斜杠后跟圆点)将源目录复制到此目录
SRC_PATH确实以/结尾。(即:斜杠后跟圆点)将源目录的内容复制到此目录
在本例中,/public-html/以斜杠结尾,因此必须只复制内容。将其更新到./public-html应该可以解决此问题。
希望这能有所帮助。
https://stackoverflow.com/questions/45401786
复制相似问题