我正在尝试将我的文件移动到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
我有什么遗失的吗?
更新: public-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
答案 0 :(得分:3)
如果您尝试将目录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
如果您想要使用该卷,请修改docker主机上/ Users / ankitsahu / workspace / docker_practice / public-html的内容。
答案 1 :(得分:0)
在将COPY
文件发送到除root之外的其他目录之前,您必须创建它们。
将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
可以解决问题。
希望这有帮助。