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中。