所以主要目的是将胖jar应用程序停靠并放入Elasticbeanstalk.问题在于背景.如果我需要的只是一个jar文件,那么在docker中添加如此多的上下文有点愚蠢.
我一直在玩.dockerignore文件,但我迷路了.我试图使用gitignore否定,但它不起作用.
*
!Dockerfile
*/
!target/
target/*
!target/*.jar
Run Code Online (Sandbox Code Playgroud)
还有正则表达式的东西,但似乎不支持复杂的正则表达式.
^((?!Dockerfile).)*$
Run Code Online (Sandbox Code Playgroud)
我也试过在stackoverflow中搜索,这两个都是我找到的:
这个问题可能与第二个问题类似,但我认为这有点不同,因为在这里,我只想在上下文中包含一个文件.
任何帮助将不胜感激.
Mau*_*hez 74
如果您需要忽略除某些目录或文件之外的所有内容,并且还忽略这些允许目录中的一些不必要的文件,则可以使用以下.dockerignore文件:
# Ignore everything
**
# Allow files and directories
!/file.txt
!/src/**
# Ignore unnecessary files inside allowed directories
# This should go after the allowed directories
**/*~
**/*.log
**/.DS_Store
**/Thumbs.db
Run Code Online (Sandbox Code Playgroud)
abr*_*und 31
除了Go的filepath.Match规则,Docker还支持一个特殊的通配符字符串**,它匹配任意数量的目录(包括零).例如,**/*.go将排除在所有目录中找到的以.go结尾的所有文件,包括构建上下文的根.
因此,只包含**的行将忽略与Dockerfile相同的目录中的所有内容.
正如预期的那样,感叹号可用于引用您希望发送到docker守护程序的任何文件.
这可能听起来很奇怪,但如果您只需要一个jar文件,则可以在构建系统中创建一个包含Dockerfile的"docker"文件夹.运行构建时,让构建脚本将单个jar文件复制到"docker",然后执行docker image build(从"docker"文件夹中)并在完成后推送到docker注册表.
| 归档时间: |
|
| 查看次数: |
21816 次 |
| 最近记录: |