文件上说是可以的。
https://docs.docker.com/engine/reference/builder/
您甚至可以使用.dockerignore文件来排除Dockerfile和.dockerignore文件。这些文件仍然被发送到守护进程,因为它需要它们来完成它的工作。但是添加和复制指令不会将它们复制到图像中。
但是,当我将dockerfile放到.dockerignore中时,我得到
Sending build context to Docker daemon 1.646MB
Error response from daemon: Cannot locate specified Dockerfile: Dockerfile发布于 2017-12-07 19:41:58
这个问题被编辑了一段时间,我没有注意到。原来的问题更准确地反映了我所缺少的知识,以及我所拥有的问题,我又回到了那个版本。
Docker在某种程度上平等地对待名称“Dockerfile”和“Dockerfile”。也就是说,您可以将其命名为“dockerfile”,如果您执行类似于docker build -t blah .的操作,那么docker仍然会自动使用它。但是,如果将dockerfile放在.dockerignore文件中,它就不知道如何自动构建映像了,您将得到
Error response from daemon: Cannot locate specified Dockerfile: Dockerfile
发布于 2017-11-30 18:47:28
是的,你可以;你甚至可以把.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文件的内容:
➜ cat .dockerignore
.dockerignore
Dockerfile
➜ test_docker_ignore cat Dockerfile
FROM ubuntu:16.04
ADD . .--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向添加了一些内容并进行了重新构建:构建将使用缓存,因为它忽略了对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发布于 2017-11-30 18:52:46
确保您正在运行当前版本的docker。旧版本与文档不匹配。这个特性是在第1.5版中添加的。
$ cat .dockerignore
Dockerfile
.dockerignore
$ cat Dockerfile
FROM busybox
COPY . /context
WORKDIR /context
CMD find .
$ docker build -t test-context .
Sending build context to Docker daemon 4.096kB
Step 1/4 : FROM busybox
---> 54511612f1c4
Step 2/4 : COPY . /context
---> bd941f5e9e18
Step 3/4 : WORKDIR /context
Removing intermediate container 47245e176bf4
---> c25ebcc95d95
Step 4/4 : CMD find .
---> Running in 6c1b05066c80
Removing intermediate container 6c1b05066c80
---> 6ee47079b59c
Successfully built 6ee47079b59c
Successfully tagged test-context:latest
$ docker run -it --rm test-context
.
./test-file2
./test-file1
$ docker version
Client:
Version: 17.11.0-ce
API version: 1.34
Go version: go1.8.3
Git commit: 1caf76c
Built: Mon Nov 20 18:36:33 2017
OS/Arch: linux/amd64
Server:
Version: 17.11.0-ce
API version: 1.34 (minimum version 1.12)
Go version: go1.8.3
Git commit: 1caf76c
Built: Mon Nov 20 18:35:05 2017
OS/Arch: linux/amd64
Experimental: truehttps://stackoverflow.com/questions/47580298
复制相似问题