jib主要用来在没有docker环境下将项目打包成docker镜像
主要有一下四种方式: maven、gradle、core、cli 本文主要介绍cli和maven两种打包方式
github地址: https://github.com/GoogleContainerTools/jib
例子:
jib war --send-credentials-over-http --allow-insecure-registries --from=bitnami/tomcat:8.0.53
--target=镜像名称:版本 --to-username=**** --to-password=**** --app-root=/tomcat
--additional-tags=latest 通过 --expose=端口,端口 ****.war
参数解释:
–send-credentials-over-http 通过http发送用户名和密码 内网环境可以走这个,外网最好时https --send-credentials-over-http
–allow-insecure-registries 使用不安全的仓库,就是仓库可以用http请求到,本地仓库可以设置成这个
以上两个参数需要放在命令的开头,否则无法生效
–environment-variables 键值对,环境变量 --environment-variables=jvmFlag=-Xms4g,jvmFlag=-Xmx4g
–program-args=程序的启动参数 ,可通过主类的args[]数组获取
–volumes= 挂在卷 具体的物理地址
–app-root=/tomcat 默认使用jetty作为web服务器,此处可以通过–from设置为docker hub中的tomcat,但是设置成Tomcat以后,此参数必填,需要填–from的tomcat的webapps的目录地址,否则不会加载,tomcat是可以将部署文件与tomcat本身分离的,只需要在service.xml中添加虚拟目录就行,但是这个工具不会自动映射,dockerhub上tomcat的默认路径为/usr/local/tomcat ,此处就应该是 /usr/local/tomcat/webapps/项目名 即可
–entrypoint=设定参数 --entrypoint=[“java”,“-jar”,“aaa.jar”],一般不用写,默认会配置好
–target=可以是镜像仓库的名称也可以是某个docker的远程服务的地址,tcp://…:2375/imagesNames:版本
Usage: jib war [-hV] [--allow-insecure-registries]
[--send-credentials-over-http] [--app-root=<app root>]
[--base-image-cache=<cache-directory>] [--console=<type>]
[--creation-time=<creation-time>] [--from=<base-image>]
[--image-format=<image-format>]
[--image-metadata-out=<path-to-json>] [--name=<image-reference>]
[--project-cache=<cache-directory>] -t=<target-image>
[-u=<user>] [--verbosity=<level>] [--additional-tags=<tag>[,
<tag>...]]... [--entrypoint=<entrypoint>[\s+<entrypoint>...]]...
[--environment-variables=<key>=<value>[,<key>=<value>...]]...
[--expose=<port>[,<port>...]]... [--labels=<key>=<value>[,
<key>=<value>...]]... [--program-args=<program-argument>[,
<program-argument>...]]... [--volumes=<volume>[,<volume>...]]...
[--credential-helper=<credential-helper> |
[--username=<username> --password[=<password>]] |
[[--to-credential-helper=<credential-helper> |
[--to-username=<username> --to-password[=<password>]]]
[--from-credential-helper=<credential-helper> |
[--from-username=<username> --from-password[=<password>]]]]]
[@<filename>...] <warFile>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.6.1</version>
<configuration>
<!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
<from>
<!--使用openjdk官方镜像-->
<image>openjdk:alpine</image>
</from>
<to>
<!--镜像名称和tag,使用了mvn内置变量${project.version},表示当前工程的version-->
<image>172.16.9.3:20039/repository/docker-images-hosted/demo-jib:${project.version}</image>
<auth>
<password>infodocker</password>
</auth>
</to>
<!--容器相关的属性-->
<container>
<!--jvm内存参数-->
<jvmFlags>
<jvmFlag>-Xms4g</jvmFlag>
<jvmFlag>-Xmx4g</jvmFlag>
</jvmFlags>
<!--要暴露的端口-->
<ports>
<port>17083</port>
</ports>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
</container>
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
<!--sendCredentialsOverHttp 打成jar包启动时使用-DsendCredentialsOverHttp=true来传递参数-->
</plugin>