dockerfile可以放入.dockerignore吗?

use*_*106 8 docker dockerfile

文档说是的,它可以.

https://docs.docker.com/engine/reference/builder/

您甚至可以使用.dockerignore文件来排除Dockerfile和.dockerignore文件.这些文件仍然发送到守护程序,因为它需要它们来完成它的工作.但ADD和COPY指令不会将它们复制到图像中.

但是当我把dockerfile放在.dockerignore中时,我得到了

Sending build context to Docker daemon  1.646MB
Error response from daemon: Cannot locate specified Dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

TJ *_*dle 11

是的你可以; 你甚至可以把.dockerignore它扔进去!

你可能做错了什么 - 可能在错误的目录中?

目录列表:

?  ls -la
total 16
drwxr-xr-x  4 tj    wheel  128 Nov 30 13:42 .
drwxrwxrwt  7 root  wheel  224 Nov 30 13:42 ..
-rw-r--r--  1 tj    wheel   26 Nov 30 13:41 .dockerignore
-rw-r--r--  1 tj    wheel   28 Nov 30 13:42 Dockerfile
Run Code Online (Sandbox Code Playgroud)

文件内容:

?  cat .dockerignore
.dockerignore
Dockerfile

?  test_docker_ignore cat Dockerfile
FROM ubuntu:16.04
ADD . .
Run Code Online (Sandbox Code Playgroud)

建一次; 指定--no-cache为详细:

?  docker build -t test --no-cache .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM ubuntu:16.04
 ---> 20c44cd7596f
Step 2/2 : ADD . .
 ---> 4d8ded297954
Successfully built 4d8ded297954
Successfully tagged test:latest
Run Code Online (Sandbox Code Playgroud)

添加内容Dockerfile并重建: 构建将使用缓存,因为它忽略了对其所做的更改Dockerfile

?  echo "# A Test Comment" >> Dockerfile
?  docker build -t test .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM ubuntu:16.04
 ---> 20c44cd7596f
Step 2/2 : ADD . .
 ---> Using cache
 ---> 4d8ded297954
Successfully built 4d8ded297954
Successfully tagged test:latest
Run Code Online (Sandbox Code Playgroud)

  • ` ---> using cache` 行之所以存在,并不是因为它忽略了对 Dockerfile 所做的更改。它在那里是因为 docker 知道在文件末尾添加注释行不会对生成的图像产生任何影响。另一方面,如果您更改“add”。.` 到 `添加 . /mydir` 它不会使用缓存。您的答案仅有助于表明可以在 .dockerignore 中使用 dockerfile 构建映像。 (4认同)

use*_*106 6

该问题不久前被编辑过,我没有注意到。原来的问题更准确地反映了我所缺少的知识和我遇到的问题,我已经恢复到那个版本。

Docker 在某种程度上同等对待名称“dockerfile”和“Dockerfile”。即,您可以将其称为“dockerfile”,并且如果您执行类似的操作,docker 仍会自动使用它docker build -t blah .。但是,如果您随后放入dockerfile.dockerignore 文件,它就不再知道如何自动构建图像,您将得到

Error response from daemon: Cannot locate specified Dockerfile: Dockerfile