- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章使用jib打包docker镜像实战由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
序 。
本文主要研究一下如何使用google的jib打包docker镜像 。
Jib 是谷歌最新开源的 Java 应用的 Docker 镜像生成工具,可以通过 Gradle 或 Maven 直接生成镜像并上传到仓库而不需要 Dockerfile 文件或者其他插件;Jib 支持将资源文件和类分层打包,可以大幅度提升生成镜像的速度 。
有一些其他的插件也可以通过 Docker 实现生成镜像,如com.palantir.docker等,但是都需要额外配置 Dockerfile, 如果应用仅需要通过 Dockerfile 构建镜像,建议使用 Jib 来提升构建和上传速度 。
maven 。
1
2
3
4
5
|
<
plugin
>
<
groupId
>com.google.cloud.tools</
groupId
>
<
artifactId
>jib-maven-plugin</
artifactId
>
<
version
>0.9.9</
version
>
</
plugin
>
|
配置 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<
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 。
打包 。
1
|
mvn compile jib:dockerBuild -X
|
使用jib:dockerBuild是在本地打包镜像,不push到远程,-X参数是显示debug信息 。
如果使用jib:build命令,则打包之后push到远程 。
输出日志实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
[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] ------------------------------------------------------------------------
|
查看镜像 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
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默认执行如下操作 。
1
2
3
|
COPY libs /app/libs/
COPY resources /app/resources/
COPY classes /app/classes/
|
也就是将libs拷贝到/app/libs,将resources拷贝到/app/resources,将classes拷贝到/app/classes. 。
doc 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://segmentfault.com/a/1190000016156009 。
最后此篇关于使用jib打包docker镜像实战的文章就讲到这里了,如果你想了解更多关于使用jib打包docker镜像实战的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!