当前位置: 首页 > 工具软件 > Jib > 使用案例 >

Java项目使用jib打包docker镜像的简单记录

张献
2023-12-01

jib主要用来在没有docker环境下将项目打包成docker镜像

主要有一下四种方式: maven、gradle、core、cli 本文主要介绍cli和maven两种打包方式

github地址: https://github.com/GoogleContainerTools/jib

1. 使用jib-cli将war包打成docker镜像

例子:

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:版本

2. jib war的全部参数:

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>

3. 对于SpringBoot项目:maven相关配置

<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>
 类似资料: