docker 无法将本地文件添加到容器

docker isn't able to add local files to container

我的目录结构如下所示:

所以我在 . 目录中执行 sudo docker build -t test 7.3/web 并且它构建了容器但在 ADD etc/php /usr/local/etc/php 处停止,给我以​​下错误:

ADD failed: file not found in build context or excluded by .dockerignore: stat etc/php: file does not exist

但是,该文件(井目录)确实存在。当我 ls -latr ./etc/php 我看到这个:

total 12
drwxr-xr-x 2 neubert neubert 4096 Jan  3 23:32 conf.d
drwxr-xr-x 4 neubert neubert 4096 Jan  3 23:32 ..
drwxr-xr-x 3 neubert neubert 4096 Jan  3 23:32 .

所以相对于我是 运行 的目录,etc/php 中的命令存在。相对于 etc/php 中存在的 Dockerfile 的目录不存在(它是 ../../etc/php)。

有什么想法吗?

您可以像这样使用 -f 标志吃蛋糕:

docker build -t test -f ./7.3/web/Dockerfile .

以上运行指定的Docker文件,但使用当前目录作为上下文路径(用作在文件中添加和复制文件的基础)。

Docker 网站非常方便的文档中有更多详细信息:https://docs.docker.com/engine/reference/commandline/build/#specify-a-dockerfile--f

So I'm in the . directory and do sudo docker build -t test 7/3/web and it builds the container but stops at ADD etc/php /usr/local/etc/php...

您提供给 docker build (7/3/web) 的参数定义了“构建上下文”。 Docker 只能访问位于该目录或目录下的文件。

最简单的解决方案可能是将您的 Dockerfile 移动到顶层目录并调整您的路径以从那里开始。

没有 移动 Docker 文件(正如 Jason 指出的那样,您可以通过 -f 在任何地方引用它),但是使目录的组织更加明显