Dockerignore:忽略除文件和Dockerfile之外的所有内容

所以主要目的是dockerize一个胖的jar应用程序,并将其放入Elasticbeanstalk。 问题在于上下文。 如果我所需要的实际上是一个单独的jar文件,将这么多的上下文添加到docker中是有点愚蠢的。

我一直在玩.dockerignore文件,但我迷路了。 我试图使用gitignore否定,但它不起作用。

* !Dockerfile */ !target/ target/* !target/*.jar 

也有正则expression式的东西,但它似乎像复杂的正则expression式不被支持。

 ^((?!Dockerfile).)*$ 

我也试过在stackoverflowsearch,这两个都是我find的:

  • .dockerignore中的例外

  • 有没有一种方法来否定.dockerignore中的模式?

这个问题可能与第二个问题类似,但是我认为它有点不同,因为在这里,我只想包含一个文件到上下文中。

任何帮助将不胜感激。

从dockerfile参考 :

除了Go的filepath.Match规则,Docker还支持一个特殊的通配符**,匹配任意数量的目录(包括零)。 例如,** / *。go将排除以所有目录中包含的.go结尾的所有文件,包括构build上下文的根目录。

因此,包含**的行将忽略与Dockerfile相同的目录中的所有内容。

不出所料,感叹号可以用来引用你想发送到docker守护进程的任何文件。

这听起来很奇怪,但是如果你只需要一个jar文件,你可以在你的Docker文件中创build一个Docker文件夹。 当你运行你的构build时,让构build脚本将单个jar文件复制到“docker”中,然后执行docker image build(从“docker”文件夹中),并在完成时推送到你的dockerregistry中。