使用-f选项构建Docker无法找到Dockerfile

AnA*_*ser 8 docker

我已经尝试了很多与docker -f选项的组合,但我从来没有让它工作

我可以做这个:

docker build -t foo/bar .
Run Code Online (Sandbox Code Playgroud)

但我不能这样做:

docker build -t foo/bar -f Dockerfile .
Run Code Online (Sandbox Code Playgroud)

或这个:

docker build -t foo/bar -f ./Dockerfile .
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

unable to prepare context: The Dockerfile (c:\path\Dockerfile) must be within the build context (.)
Run Code Online (Sandbox Code Playgroud)

我在Windows 7上通过默认的vm使用docker .Docker版本是1.8.1,build d12ea79

我看不出差异.在项目中为不同的任务设置不同的Dockerfiles可能会非常好,但是没有-f选项是不可能的.

小智 6

这是我如何使用 docker build 来避免此错误的示例

docker build -f my.dockerfile ./

注意结尾的正斜杠


Ahm*_*any 6

好吧,正如错误消息所暗示的那样,您Dockerfile不在 中context.在您的情况下,这是当前目录 ( )。

使用 指定的 docker 文件-f必须始终位于作为参数指定的上下文目录中

所以,通常这应该可以正常工作:

docker build -f /path/to/context/dir/Dockerfile /path/to/context/dir
Run Code Online (Sandbox Code Playgroud)

这也是:

cd /some/dir
docker build -f /some/dir/customDir/Custom-Dockerfile-name .
Run Code Online (Sandbox Code Playgroud)

虽然,这会失败:

docker build -f /path/to/diff/dir/Dockerfile /path/to/context/dir
Run Code Online (Sandbox Code Playgroud)

文档

docker build [OPTIONS] PATH | URL | -
Run Code Online (Sandbox Code Playgroud)

docker build 命令从 Dockerfile 和“上下文”构建 Docker 镜像。构建的上下文是位于指定 PATH 或 URL 中的一组文件

和:

默认情况下,docker build 命令将在构建上下文的根目录中查找 Dockerfile。-f, --file, 选项允许您指定要使用的替代文件的路径。在将同一组文件用于多个构建的情况下,这很有用。路径必须是构建上下文中的文件。如果指定了相对路径,则将其解释为相对于上下文的根。


use*_*097 -1

如果你这样做

docker build --help
Run Code Online (Sandbox Code Playgroud)

你会注意到,除其他外

-f, --file=                     Name of the Dockerfile (Default is 'PATH/Dockerfile')
Run Code Online (Sandbox Code Playgroud)

你可以做任何一个

docker build -t mytag .
Run Code Online (Sandbox Code Playgroud)

或者

docker build -t mytag -f another_dockerfile
Run Code Online (Sandbox Code Playgroud)

但不能同时使用.and -f

它是.,或者是带有 的 Dockerfile -f,而不是两者

  • docker:“build”需要 1 个参数。请参阅“c:\Program Files\Docker Toolbox\docker.exe build --help”。用法:docker build [选项] PATH | 网址 | - 从 PATH 中的源代码构建新映像 (2认同)