摘要:比如该目录下有,则对应该镜像目录为打包使用是在本地打包镜像,不到远程,参数是显示信息如果使用命令,则打包之后到远程输出日志实例查看镜像可以看到指定了这三个文件夹小结默认执行如下操作也就是将拷贝到,将拷贝到,将拷贝到
序
本文主要研究一下如何使用google的jib打包docker镜像
maven配置com.google.cloud.tools jib-maven-plugin 0.9.9
UTF-8 UTF-8 1.8 yyyyMMdd org.springframework.boot spring-boot-maven-plugin com.google.cloud.tools jib-maven-plugin 0.9.9 -Xms512m 8080 true java:8u172-jre-alpine jib-demo:${maven.build.timestamp} true ${project.basedir}/src/main/jib
这里指定base image为java:8u172-jre-alpine
同时指定生成的image名称为jib-demo:${maven.build.timestamp}
container标签可以指定相关参数,比如jvmFlags指定JVM参数,ports指定expose的端口号
extraDirectory用于指定要添加的目录,默认为${project.basedir}/src/main/jib,即该目录下的文件夹会在docker镜像里头同步创建,目录层级关系以jib下目录层级关系为准。比如该目录下有app/resources/demo.txt,则对应该镜像目录为/app/resources/demo.txt
打包mvn compile jib:dockerBuild -X
使用jib:dockerBuild是在本地打包镜像,不push到远程,-X参数是显示debug信息
如果使用jib:build命令,则打包之后push到远程
输出日志实例:
[DEBUG] TIMING Building image to Docker daemon [DEBUG] RUNNING Building image to Docker daemon [INFO] Getting base image java:8u172-jre-alpine... [DEBUG] TIMING Pulling base image manifest [DEBUG] RUNNING Pulling base image manifest [DEBUG] TIMING Building application layers [DEBUG] RUNNING Building application layers [INFO] Building dependencies layer... [DEBUG] TIMING Building dependencies layer [DEBUG] RUNNING Building dependencies layer [INFO] Building resources layer... [DEBUG] TIMING Building resources layer [DEBUG] RUNNING Building resources layer [INFO] Building classes layer... [DEBUG] TIMING Building classes layer [DEBUG] RUNNING Building classes layer [INFO] Building extra files layer... [DEBUG] TIMING Building extra files layer [DEBUG] RUNNING Building extra files layer [DEBUG] TIMED Building application layers : 3.498 ms [DEBUG] Building application layers : 3.498 ms [DEBUG] Building extra files layer built sha256:0a9321c621ee2c138d9a93f4ba47f825e20dd7aca0e9206f30bf560122fdaa31 [DEBUG] Building resources layer built sha256:933116c8da4db70000355b750af2f3b5c4545e74db7b5eb0a5e37689ef86d44f [DEBUG] Building classes layer built sha256:a99dbde7d015ba3d15b9265ac38f6536d65b00dd2a864b7003a34742f483939b [DEBUG] TIMED Building extra files layer : 33.718 ms [DEBUG] TIMED Building classes layer : 33.901 ms [DEBUG] Building extra files layer : 33.718 ms [DEBUG] TIMED Building resources layer : 34.062 ms [DEBUG] Building resources layer : 34.062 ms [DEBUG] Building classes layer : 33.901 ms [DEBUG] Building dependencies layer built sha256:a19961ec08095eb70ca3a070945223dcf51500a255a745272276139bf0a29f4e [DEBUG] TIMED Building dependencies layer : 1047.83 ms [DEBUG] Building dependencies layer : 1047.83 ms [INFO] The base image requires auth. Trying again for java:8u172-jre-alpine... //...... [DEBUG] TIMED Pulling base image manifest : 8959.891 ms [DEBUG] Pulling base image manifest : 8959.891 ms [DEBUG] TIMING Setting up base image caching [DEBUG] RUNNING Setting up base image caching [DEBUG] TIMED Setting up base image caching : 0.824 ms [DEBUG] Setting up base image caching : 0.824 ms [DEBUG] TIMING Pulling base image layer sha256:500c0ac4cdc58aee9a008e70466eeec8a4b74b25c29d003764635d2fe1b42827 [DEBUG] RUNNING Pulling base image layer sha256:500c0ac4cdc58aee9a008e70466eeec8a4b74b25c29d003764635d2fe1b42827 [DEBUG] TIMING Pulling base image layer sha256:aa38cd8c77d7320c7489327775e074580db5f23467198aab3e79c7db5cdfbdca [DEBUG] TIMING Pulling base image layer sha256:cb56d62302ec31640b40ca15843e7af6be145966a1064c78ea7afd6f10ce49e6 [DEBUG] RUNNING Pulling base image layer sha256:cb56d62302ec31640b40ca15843e7af6be145966a1064c78ea7afd6f10ce49e6 [DEBUG] TIMING Pulling base image layer sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28 [DEBUG] RUNNING Pulling base image layer sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28 [DEBUG] RUNNING Pulling base image layer sha256:aa38cd8c77d7320c7489327775e074580db5f23467198aab3e79c7db5cdfbdca [DEBUG] TIMED Pulling base image layer sha256:500c0ac4cdc58aee9a008e70466eeec8a4b74b25c29d003764635d2fe1b42827 : 612.524 ms [DEBUG] Pulling base image layer sha256:500c0ac4cdc58aee9a008e70466eeec8a4b74b25c29d003764635d2fe1b42827 : 612.524 ms [DEBUG] TIMED Pulling base image layer sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28 : 9985.702 ms [DEBUG] Pulling base image layer sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28 : 9985.702 ms [DEBUG] TIMED Pulling base image layer sha256:aa38cd8c77d7320c7489327775e074580db5f23467198aab3e79c7db5cdfbdca : 27267.144 ms [DEBUG] Pulling base image layer sha256:aa38cd8c77d7320c7489327775e074580db5f23467198aab3e79c7db5cdfbdca : 27267.144 ms [DEBUG] TIMED Pulling base image layer sha256:cb56d62302ec31640b40ca15843e7af6be145966a1064c78ea7afd6f10ce49e6 : 54734.971 ms [DEBUG] Pulling base image layer sha256:cb56d62302ec31640b40ca15843e7af6be145966a1064c78ea7afd6f10ce49e6 : 54734.971 ms [DEBUG] TIMING Building container configuration [DEBUG] RUNNING Building container configuration [INFO] Finalizing... [DEBUG] TIMED Building container configuration : 0.462 ms [DEBUG] Building container configuration : 0.462 ms [INFO] Loading to Docker daemon... [DEBUG] TIMED Building image to Docker daemon : 65862.956 ms [DEBUG] Building image to Docker daemon : 65862.956 ms [INFO] [INFO] Container entrypoint set to [java, -Xms512m, -cp, /app/resources/:/app/classes/:/app/libs/*, com.example.JibDemoApplication] [INFO] [INFO] Built image to Docker daemon as jib-demo:20180826 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:07 min [INFO] Finished at: 2018-08-26T21:38:11+08:00 [INFO] Final Memory: 26M/493M [INFO] ------------------------------------------------------------------------查看镜像
docker inspect jib-demo:20180826 [ { "Id": "sha256:7554492dde84091bc6d015b29ec4bf854bb841b9ec4d8f7bef8b51a8ec59ef94", "RepoTags": [ "jib-demo:20180826" ], "RepoDigests": [], "Parent": "", "Comment": "", "Created": "2018-08-26T13:37:05.65Z", "Container": "", "ContainerConfig": { "Hostname": "", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": null, "Cmd": null, "Image": "", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": null }, "DockerVersion": "", "Author": "", "Config": { "Hostname": "", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "8080/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/opt/jdk1.8.0_172/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "JAVA_HOME=/opt/jdk1.8.0_172" ], "Cmd": [], "Image": "", "Volumes": null, "WorkingDir": "", "Entrypoint": [ "java", "-Xms512m", "-cp", "/app/resources/:/app/classes/:/app/libs/*", "com.example.JibDemoApplication" ], "OnBuild": null, "Labels": {} }, "Architecture": "amd64", "Os": "linux", "Size": 186079594, "VirtualSize": 186079594, "GraphDriver": { "Data": null, "Name": "aufs" }, "RootFS": { "Type": "layers", "Layers": [ "sha256:cd7100a72410606589a54b932cabd804a17f9ae5b42a1882bd56d263e02b6215", "sha256:317e0b42ef29551507adc792c2dbc389af85c5d68900cf0f08abe907cbd4e199", "sha256:d6fd5302a9ee64c43b46153e9678153819d6d0e247381acbbe6cbe6ed9de0366", "sha256:417c6bd0930eb69d17ae5d601898a6a012900ca33c69e612840a3042b2451cbb", "sha256:8309a5eed5158c5639acb664312ddc7027a2ecb172744f548d6d9fb5f918a744", "sha256:6ef8c795d7a5e2a07f51d572a90b820e089f89adf30798193f4f3f410a261415", "sha256:9990447f3d37e3f2dc70718d0ea6602cf7843091d8bbe395f552c9c5dd10551c", "sha256:ff7910aaeee962d1d86e00742030378a2758da59d8c8cda3fe44314bbffffd8081" ] }, "Metadata": { "LastTagTime": "0001-01-01T00:00:00Z" } } ]
可以看到java -cp指定了/app/libs/、/app/resources/、/app/classes/这三个文件夹
小结jib默认执行如下操作
COPY libs /app/libs/ COPY resources /app/resources/ COPY classes /app/classes/
也就是将libs拷贝到/app/libs,将resources拷贝到/app/resources,将classes拷贝到/app/classes.doc
jib
Building Docker Image for a Spring Boot App With Jib
build-containers-faster-with-jib-a-google-image-build-tool-for-java-applications
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27417.html
摘要:在年下旬开源了一款新的工具,可以轻松地将应用程序容器化。由于默认访问谷歌的仓库,而国内访问不稳定会经常导致网络超时,所以笔者使用了国内的阿里云镜像服务,那么就不需要访问谷歌的仓库了。执行完成后,我们可以在阿里云镜像仓库获取镜像。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。...
摘要:在年下旬开源了一款新的工具,可以轻松地将应用程序容器化。由于默认访问谷歌的仓库,而国内访问不稳定会经常导致网络超时,所以笔者使用了国内的阿里云镜像服务,那么就不需要访问谷歌的仓库了。执行完成后,我们可以在阿里云镜像仓库获取镜像。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。...
摘要:今天逛了逛,顺手精选出了一下近几个月以来上最热门的个项目。相关阅读正式开源,帮助应用快速容器化未来可能会上热门的项目地址介绍哈哈,皮一下很开心。这是我自己开源的一份文档,目前仍在完善中,欢迎各位英雄好汉一起完善。 showImg(https://segmentfault.com/img/remote/1460000015766827?w=391&h=220);今天逛了逛Github,顺...
摘要:本文将介绍精简容器镜像的必要性并以基于的应用为例描述最小化容器镜像的常用技巧。经过这一优化,最终镜像的大小为。 背景 随着容器技术的普及,越来越多的应用被容器化。人们使用容器的频率越来越高,但常常忽略一个基本但又非常重要的问题 - 容器镜像的体积。本文将介绍精简容器镜像的必要性并以基于 spring boot 的 java 应用为例描述最小化容器镜像的常用技巧。 精简容器镜像的必要性 ...
阅读 3063·2023-04-26 00:53
阅读 3491·2021-11-19 09:58
阅读 1673·2021-09-29 09:35
阅读 3256·2021-09-28 09:46
阅读 3751·2021-09-22 15:38
阅读 2676·2019-08-30 15:55
阅读 2984·2019-08-23 14:10
阅读 3758·2019-08-22 18:17