因此,主要目的是将一个fat jar应用程序对接并将其放入Elasticbeanstalk中。问题在于背景。如果我只需要一个jar文件,那么在docker中添加这么多上下文是有点愚蠢的。
我一直在玩.dockerignore文件,但我迷路了。我试着用吉蒂格诺尔否定法,但没用。
*
!Dockerfile
*/
!target/
target/*
!target/*.jar
还有正则表达式,但似乎不支持复杂的正则表达式。
^((?!Dockerfile).)*$
我也试过在stackoverflow中搜索,这两个是我找到的:
这个问题可能与第二个问题类似,但我认为它略有不同,因为在这里,我只想在上下文中包含一个文件。
任何帮助将不胜感激。
4条答案
按热度按时间gc0ot86w1#
如果您需要忽略除某些目录或文件之外的所有内容,并且还忽略允许目录中的一些不必要的文件,则可以使用以下
.dockerignore
文件:6mw9ycah2#
从dockerfile参考:
除了Go语言的filepath.Match规则,Docker还支持一个特殊的通配符字符串**,它可以匹配任意数量的目录(包括零)。例如,/*.go将排除所有目录中以.go结尾的所有文件,包括构建上下文的根目录。
所以一行只包含的代码将忽略Dockerfile所在目录下的所有内容。
正如预期的那样,感叹号可以用来引用您希望发送到docker守护程序的任何文件。
axr492tv3#
这听起来可能很奇怪,但如果你只需要一个jar文件,你可以在你的构建系统中创建一个“docker”文件夹,其中包含你的Dockerfile。当你运行构建时,让构建脚本将单个jar文件复制到“docker”中,然后执行docker镜像构建(从“docker”文件夹中),并在完成后推送到你的docker注册表。
sz81bmfz4#
下面是一个可用于
.dockerignore
的示例文件