docker 无法将本地文件添加到容器
docker isn't able to add local files to container
我的目录结构如下所示:
- ./7.3/web/Dockerfile
- ./etc/php/*
所以我在 .
目录中执行 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
在任何地方引用它),但是使目录的组织更加明显
我的目录结构如下所示:
- ./7.3/web/Dockerfile
- ./etc/php/*
所以我在 .
目录中执行 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
在任何地方引用它),但是使目录的组织更加明显