首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件可以放进.dockerignore吗?

文件可以放进.dockerignore吗?
EN

Stack Overflow用户
提问于 2017-11-30 18:29:18
回答 3查看 18.6K关注 0票数 32

文件上说是可以的。

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

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

但是,当我将dockerfile放到.dockerignore中时,我得到

代码语言:javascript
复制
Sending build context to Docker daemon  1.646MB
Error response from daemon: Cannot locate specified Dockerfile: Dockerfile
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

票数 4
EN

Stack Overflow用户

发布于 2017-11-30 18:47:28

是的,你可以;你甚至可以把.dockerignore本身扔进去!

你可能做了其他不正确的事情-可能是在错误的目录中?

目录清单:

代码语言:javascript
复制
➜  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

文件的内容:

代码语言:javascript
复制
➜  cat .dockerignore
.dockerignore
Dockerfile

➜  test_docker_ignore cat Dockerfile
FROM ubuntu:16.04
ADD . .

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

代码语言:javascript
复制
➜  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所做的更改

代码语言:javascript
复制
➜  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
票数 32
EN

Stack Overflow用户

发布于 2017-11-30 18:52:46

确保您正在运行当前版本的docker。旧版本与文档不匹配。这个特性是在第1.5版中添加的。

代码语言:javascript
复制
$ 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: true
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47580298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档