2017-07-30 34 views
0

我试图将我的文件移动到apache映像的htdocs文件夹中。 她就是我的dockerfile样子:为什么我无法将我的文件复制到码头集装箱?

FROM httpd:2.4 
MAINTAINER Ankit 
COPY ./public-html/ /usr/local/apache2/htdocs/ 

但COPY命令不将文件复制到容器中。 下面是输出 - 是的index.html默认在那里,我尝试复制是公共HTML文件夹:

[email protected]:/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命令的内容:

[email protected]:/usr/local/apache2/htdocs# ls -a 
. .. index.html sample.html try 

回答

0

如果你想目录public-html复制到该目录/usr/local/apache2/htdocs有一个.../htdocs/public-html/目录,然后使用以下命令:

COPY public-html/ /usr/local/apache2/htdocs/public-html/ 

默认情况下,复制的目录将复制该目录的内容,所以您需要将其命名为目标以显示该目录。


编辑:您运行命令包含卷将替换该目录下的图像内容:

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 

如果您想要使用该卷,请在您的码头主机上修改/ Users/ankitsahu/workspace/docker_practice/public-html的内容。

+0

即使这不是将public-html文件夹复制到容器。 –

+0

请包含您运行构建新映像并运行容器的步骤。 – BMitch

+0

Dockerfile: FROM的httpd:2.4 MAINTAINER ANKIT COPY公共HTML /的/ usr /本地/ Apache2的/ htdocs中/公共HTML/ 搬运工建立-f -t Dockerfile阿帕奇。 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请尝试 –

0

之前,你可以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应该可以解决问题。

希望这会有所帮助。

+0

htdocs文件夹已经存在,它是在htdocs里面没有创建的public-html文件夹。 –

+0

啊!错误的问题。将COPY修改为'COPY public-html/usr/local/apache2/htdocs /' – krisnik

+0

不可以。那也没用。 + ./public-html/是必需的,因为它提到了我的项目根源的相对路径。 –

相关问题