你还在用 Dockerfile ?试试 jib
本次 moretime software
为大家推荐一个 Google 出品的 maven 插件, jib
[1]。
一个常用场景,将 spring boot 服务打包成 docker 镜像,一般怎么做? spring 官方提供了一个解决方案[2],写一个 Dockerfile,然后附带一个 maven 插件来做。不过我还看过一些连 Spring 提供的Maven 插件都不用的,直接先 mvn package
再 docker build .
那 jib
的效果是什么呢?
执行命令,直接推到 docker 远程仓库。
不要写 dockerfile,甚至docker都不用装。并且还会自动帮你分层,减少存储空间[3]。总之就是很强。至于我是从哪里知道这个东西的呢?我从 jhipster
[4] 里知道的,说明这已经是一个最佳实践了,下面来看看具体怎么用。
在 pom.xml 里写上
<build>
...
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.7.0</version>
<configuration>
<from>
<image>openjdk:8-jdk-alpine</image>
</from>
</configuration>
</plugin>
</plugins>
</build>
这里加了一个基础镜像的配置,默认的是 Google 的镜像,当然用不了,并且 alpine [5] 也是上文 spring 教程中提到的镜像
之后运行两个命令
- 构成镜像推到远端仓库
mvn jib:build -Dimage=镜像名
本地慎用,万一把公司代码推向 docker.io 远端就糟了。不管感觉配置一下在CI里用还不错。
- 构成镜像推送到本地仓库
mvn jib:dockerBuild -Dimage=镜像名
这个是推到本地仓库,就是 docker images
能看到的地方,运行这个命令的前提是本地运行着 docker。
这是本公众号的第1篇文章,之后会分享更多能够节省开发时间,提供开发效率,节能的技术文章。
目前本公众号的 Slogan是:懂得越多,做的越快,不加班。
[1] https://github.com/googleContainerTools/jib/
[2] https://spring.io/guides/gs/spring-boot-docker/
[3] https://www.infoq.cn/article/eULlQ4A3RcaLLQeImQy9
[4] https://www.jhipster.tech/installation/
[5] https://www.alpinelinux.org/
欢迎关注
上一篇: [2]十道算法题【Java实现】
下一篇: 你还在用 Swagger?试试这个神器!