我已尝试过很多与docker -f选项的组合,但我从来没有让它工作
我可以这样做:
docker build -t foo/bar .
但我不能这样做:
docker build -t foo/bar -f Dockerfile .
或者这个:
docker build -t foo/bar -f ./Dockerfile .
这给了我以下错误:
unable to prepare context: The Dockerfile (c:\path\Dockerfile) must be within the build context (.)
我在Windows 7上通过默认的vm使用docker.Docker版本是1.8.1,build d12ea79
我看不出差异。在项目中为不同的任务设置不同的Dockerfiles可能会非常好,但是没有-f选项是不可能的。
答案 0 :(得分:2)
好吧,正如错误消息所示,您的Dockerfile
不在context
范围内,这是您案例中的当前目录(.
)。
我们的想法是,您使用-f
指定的泊坞窗文件必须始终位于您指定的上下文 中。
所以,通常这应该可以正常工作:
docker build -f /path/to/context/dir/Dockerfile /path/to/context/dir
这也是:
cd /some/dir
docker build -f /some/dir/customDir/Custom-Dockerfile-name .
虽然这会失败:
docker build -f /path/to/diff/dir/Dockerfile /path/to/context/dir
从您的输出中,c:\path\Dockerfile
不在.
范围内(即不在您当前的工作目录中)
关于Docs的更多细节,命令解剖是:
docker build [OPTIONS] PATH | URL | -
docker build命令从Dockerfile和“context”构建Docker镜像。构建的上下文是位于指定PATH或URL
中的文件集
和
默认情况下,docker build命令将在构建上下文的根目录中查找Dockerfile。 -f, - file,选项允许您指定要使用的备用文件的路径。在将同一组文件用于多个构建的情况下,这非常有用。路径必须是构建上下文中的文件。如果指定了相对路径,则将其解释为相对于上下文的根。
答案 1 :(得分:1)
以下是我如何使用docker build来避免此错误的示例
docker build -f my.dockerfile ./
请注意正斜杠
答案 2 :(得分:0)
我遇到了这个问题,结果发现它是由于我的dockerfile在作为NTFS中的文件夹安装的磁盘上引起的。一旦我将它移动到常规文件夹,它就可以正常工作。
答案 3 :(得分:0)
如果您的Dockerfile
不在项目根目录(当前目录)中,请在-f
之后显示。
以下是我使用的示例:
docker build -t test_service -f deployment/dev/Dockerfile .
答案 4 :(得分:0)
稍晚一点,但昨天我遇到了这个问题。基本上,当使用点(.
)时,您将当前目录设置为工作目录 - 如果您使用-f
标志,则很可能是不正确的。所以你需要做以下事情:
docker build -f /path/to/Dockerfile /path/to/
请注意/path/to/
替换.
。这会将docker脚本置于正确的上下文中。如果需要,您可以使用任何其他标志(如-t
)。
docker build -t foo/bar -f /path/to/Dockerfile /path/to/
这对我来说就像一个魅力。
答案 5 :(得分:-1)
如果你这样做
console.log($scope.bID)
你会注意到,除其他外
docker build --help
你可以做任何一件事
-f, --file= Name of the Dockerfile (Default is 'PATH/Dockerfile')
或
docker build -t mytag .
但您不能同时使用docker build -t mytag -f another_dockerfile
和.
。
是-f
,或者是.
的Dockerfile,而不是