Dockerfile COPY文件失败

时间:2017-09-20 16:45:27

标签: docker dockerfile docker-on-windows

我有一个简单的Dockerfile

x[:, i][:, np.newaxis]

使用构建命令:

FROM php:7.1-apache
LABEL maintainer="rburton@agsource.com"
COPY MyAgsourceAPI /var/www/MyAgsourceAPI
COPY MyAgsourceAPI/conf/php/drivers /usr/lib/apache2/modules/
COPY MyAgSourceAPI/conf/php/apache2/php.ini /usr/local/etc/php/

最后一行返回错误:

docker build -t rkevinburton/myagsourceapi .

所有其他' COPY'行执行没有错误。我不清楚这意味着什么或我的Dockerfile应该如何改变。我主要从有关php的docker hub的文档中获取此COPY。这可能是由于/ usr / local / etc / php的只读属性。但我无法从错误中分辨出来。想法?

3 个答案:

答案 0 :(得分:0)

将行更改为

COPY MyAgsourceAPI/conf/php/apache2 /usr/local/etc/php/

哪些副本内容(只有一个文件)有效。虽然我仍然不确定如何复制一个文件。

答案 1 :(得分:-1)

为我解决了这个问题的原因是我需要确保我即将复制的所有文件都需要与我的Dockerfile(不在其上方的任何文件夹中)相同的文件夹中,这是同一个文件夹我在哪里运行docker build命令。 如果我将它们放在该文件夹之外 - COPY将失败,如上所述。

答案 2 :(得分:-1)

根据文档,COPY和ADD仅在构建目录上工作:ADD doccumentation

  

路径必须位于构建的上下文中;你不能添加../something / something,因为docker build的第一步是将上下文目录(和子目录)发送到docker守护进程。

所以你可以通过&#34来复制文件;下载它"到构建目录。或者您可以在运行命令中装入卷。

删除复制行,然后在运行命令中尝试:

docker run -v /absolute/path/MyAgsourceAPI:/var/www/MyAgsourceAPI -v /absolute/path/MyAgsourceAPI/conf/php/drivers:/usr/lib/apache2/modules/ -v /absolute/path/MyAgsourceAPI/conf/php/apache2/php.ini:/usr/local/etc/php/php.ini <theidoftheimage>

不确定这是最好的方法还是最佳实践,但这项工作