亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

使用jib打包docker鏡像實戰

2024-09-01 13:55:29
字體:
來源:轉載
供稿:網友

本文主要研究一下如何使用google的jib打包docker鏡像

Jib 是谷歌最新開源的 Java 應用的 Docker 鏡像生成工具,可以通過 Gradle 或 Maven 直接生成鏡像并上傳到倉庫而不需要 Dockerfile 文件或者其他插件;Jib 支持將資源文件和類分層打包,可以大幅度提升生成鏡像的速度

有一些其他的插件也可以通過 Docker 實現生成鏡像,如com.palantir.docker等,但是都需要額外配置 Dockerfile, 如果應用僅需要通過 Dockerfile 構建鏡像,建議使用 Jib 來提升構建和上傳速度

maven

      <plugin>        <groupId>com.google.cloud.tools</groupId>        <artifactId>jib-maven-plugin</artifactId>        <version>0.9.9</version>      </plugin>

配置

  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>    <maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>  </properties>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>      <plugin>        <groupId>com.google.cloud.tools</groupId>        <artifactId>jib-maven-plugin</artifactId>        <version>0.9.9</version>        <configuration>          <container>            <jvmFlags>              <jvmFlag>-Xms512m</jvmFlag>            </jvmFlags>            <ports>              <port>8080</port>            </ports>            <useCurrentTimestamp>true</useCurrentTimestamp>          </container>          <from>            <image>java:8u172-jre-alpine</image>          </from>          <to>            <image>jib-demo:${maven.build.timestamp}</image>          </to>          <allowInsecureRegistries>true</allowInsecureRegistries>          <extraDirectory>${project.basedir}/src/main/jib</extraDirectory>        </configuration>      </plugin>    </plugins>  </build>

這里指定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:ff7910aaeee962d1d86e00742030378a2758da59d8c8cda3fe44314bbddd8081"      ]    },    "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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影免费观看中文字幕| 日韩免费在线观看视频| 成人性生交大片免费看视频直播| 成人福利网站在线观看11| 日韩中文字幕欧美| 欧美午夜精品久久久久久人妖| 亚洲国产毛片完整版| 欧美精品www在线观看| 国产精品久久久久久久久久久久| 久久久久国产视频| 精品夜色国产国偷在线| 国产欧美精品xxxx另类| 日韩在线视频中文字幕| 久久99久国产精品黄毛片入口| 国产视频久久久| 欧美午夜片在线免费观看| 欧美精品激情在线观看| 欧美国产日韩xxxxx| 久久久亚洲欧洲日产国码aⅴ| 亚洲成av人片在线观看香蕉| 日韩一区二区久久久| 91国语精品自产拍在线观看性色| 欧洲永久精品大片ww免费漫画| 亚洲性线免费观看视频成熟| 日韩网站免费观看| 色婷婷**av毛片一区| 欧美激情在线观看视频| 亚洲精品视频免费| 亚洲精品国产精品自产a区红杏吧| 欧美黄色免费网站| 日韩69视频在线观看| 久久精品中文字幕免费mv| 久久综合伊人77777尤物| 日韩电影免费观看在线观看| 精品视频久久久久久| 欧美电影免费观看网站| 国产丝袜一区视频在线观看| 91在线无精精品一区二区| 91精品国产乱码久久久久久久久| 性色av一区二区咪爱| 亚洲精品国产美女| 欧美另类第一页| 欧美电影在线观看网站| 欧美高清电影在线看| 久久久亚洲影院你懂的| 96pao国产成视频永久免费| 欧美激情综合色综合啪啪五月| 精品动漫一区二区| 日本在线精品视频| 国产成人精品日本亚洲专区61| 亚洲精品美女在线观看播放| 亚洲第一福利视频| 欧洲美女免费图片一区| 91人成网站www| 国产日韩欧美中文在线播放| 欧美成人合集magnet| 亚洲黄一区二区| 欧美午夜片欧美片在线观看| 91久久精品国产91久久| 亚洲第一av网站| 中文字幕无线精品亚洲乱码一区| 亲爱的老师9免费观看全集电视剧| 欧美成人一二三| 久久久亚洲精选| 亚洲精品久久久久国产| 日韩成人高清在线| 国产欧洲精品视频| 成人久久一区二区| 2024亚洲男人天堂| 亚洲欧美日本精品| 中文字幕av一区中文字幕天堂| 亚洲视频在线播放| 欧美国产日韩二区| 亚洲精品视频在线播放| 久久成人在线视频| 亚洲白虎美女被爆操| www国产亚洲精品久久网站| 精品国产成人av| 亚洲成人激情在线| 日韩中文在线视频| 亚洲国内高清视频| 日本欧美在线视频| 91精品国产高清| 国产精品v片在线观看不卡| 久久99热精品这里久久精品| 上原亚衣av一区二区三区| 亚洲最大的av网站| 国产精品第三页| 国产色婷婷国产综合在线理论片a| 国产精品一区二区久久久| 91视频88av| 在线观看精品自拍私拍| 久久久影视精品| 久久精品一本久久99精品| 亚洲国产又黄又爽女人高潮的| 中文在线资源观看视频网站免费不卡| 日韩精品视频在线免费观看| 欧美限制级电影在线观看| 日韩欧美精品免费在线| 97国产精品人人爽人人做| 亚洲成人av片| 日韩在线中文视频| 欧美日韩人人澡狠狠躁视频| 日本国产一区二区三区| 2019av中文字幕| 亚洲高清免费观看高清完整版| 成人性生交大片免费观看嘿嘿视频| 欧美在线视频在线播放完整版免费观看| 成人性生交大片免费看小说| 综合136福利视频在线| 日韩美女在线观看一区| 成人欧美一区二区三区在线| 亚洲男人天堂2024| 亚洲美女免费精品视频在线观看| 中文字幕成人在线| 国产精品一香蕉国产线看观看| 国内精品久久久久影院 日本资源| 欧美超级免费视 在线| 日韩国产欧美精品一区二区三区| 2018中文字幕一区二区三区| 91精品久久久久久久久久入口| 欧美激情视频网| 久久亚洲精品毛片| 日本成人激情视频| 国产成人免费av| 精品精品国产国产自在线| 久久久久久中文| 欧美视频裸体精品| 国产91色在线|| 久青草国产97香蕉在线视频| 久久免费国产精品1| 在线播放日韩精品| 欧美噜噜久久久xxx| 亚洲香蕉在线观看| 欧美日韩国产一区在线| 91色视频在线导航| 欧美激情视频在线观看| 久久久噜噜噜久久| 日韩中文字幕精品视频| 亚洲国产精品中文| 欧美日韩美女在线观看| 久久久中精品2020中文| 国产精品视频xxx| 国产精品第七十二页| 91在线国产电影| 久久亚洲精品一区二区| 久久中文字幕在线| 久久久女人电视剧免费播放下载| 日本亚洲欧洲色α| 97免费中文视频在线观看| 国产精品96久久久久久又黄又硬| 成人久久一区二区三区| 国产一区二区三区在线看| 欧美一性一乱一交一视频| 91香蕉嫩草神马影院在线观看| 欧美成人一区在线| 久久精品电影网| 国产亚洲精品一区二区| 亚洲一区二区三区香蕉| 久久视频在线直播| 亚洲精品成人久久| 成人福利视频在线观看| 国产主播欧美精品| 国产午夜精品一区二区三区|