我已经尝试了很多与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选项是不可能的.
好吧,正如错误消息所暗示的那样,您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,而不是两者
| 归档时间: |
|
| 查看次数: |
7990 次 |
| 最近记录: |