欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

你还在用 Dockerfile ?试试 jib

程序员文章站 2022-05-05 18:03:28
...

本次 moretime software 为大家推荐一个 Google 出品的 maven 插件, jib [1]。
一个常用场景,将 spring boot 服务打包成 docker 镜像,一般怎么做? spring 官方提供了一个解决方案[2],写一个 Dockerfile,然后附带一个 maven 插件来做。不过我还看过一些连 Spring 提供的Maven 插件都不用的,直接先 mvn packagedocker 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 教程中提到的镜像

之后运行两个命令

  1. 构成镜像推到远端仓库

mvn jib:build -Dimage=镜像名
本地慎用,万一把公司代码推向 docker.io 远端就糟了。不管感觉配置一下在CI里用还不错。

  1. 构成镜像推送到本地仓库

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/

欢迎关注
你还在用 Dockerfile ?试试 jib