使用jib-maven-plugin插件打包docker镜像上传到私有镜像库,为了账户安全,需要设置隐藏密码,并且使用rancher来管理镜像的启动
项目前期准备在阿里云的容器镜像服务中创建一个镜像仓库,用于部署创建好之后,在本地创建maven的环境设置pom.xml<plugin><!--https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#example--><groupI.
项目前期准备
在阿里云的容器镜像服务中创建一个镜像仓库,用于部署
如果是使用的rancher,需要在镜像库中添加 阿里云镜像的公网地址
这样配置过后,在rancher里面才可以正常的拉取到上传的docker镜像。
创建好之后,在本地创建maven的环境
设置pom.xml
<plugin>
<!--
https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#example
-->
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.4.0</version>
<configuration>
<!-- 相当于 Dockerfile 中的 FROM -->
<from>
<image>java:8</image>
</from>
<to>
<!--构建镜像名称,这里我使用maven中定义的项目名称-->
<image>${docker.registry.url}/${project.name}.jar</image>
<!-- <!–私有仓库的账号密码–>-->
<!-- <auth>-->
<!-- <username>${docker.registry.username}</username>-->
<!-- <password>${docker.registry.password}</password>-->
<!-- </auth>-->
<!--Docker 镜像的 tag 这里使用maven定义的版本号-->
<tags>
<tag>${project.version}</tag>
</tags>
</to>
<container>
<!--jvm内存参数-->
<jvmFlags>
<jvmFlag>-Xms400m</jvmFlag>
<jvmFlag>-Xmx400m</jvmFlag>
</jvmFlags>
<mainClass>org.poem.PipeApi</mainClass>
</container>
<!--用没配置安全认证的registry-->
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
</plugin>
配置maven settings.xml
文件
获取master密码(阿里云配置)
使用以下命令可以得到一个master密码,例如得到的加密密码是:{VrVw6/Cg8FYHpfLj8oO/qRbM******************}
mvn --encrypt-master-password <password>
我们需要打开~/.m2/settings-security.xml这个文件(如果没有就手动创建)
添加到标签中,文件内容如下:
<settingsSecurity>
<master>{VrVw6/Cg8FYHpfLj8oO/qRbM******************}</master>
</settingsSecurity>
如果没有settings-security.xml,需要手动创建
获取server加密密码(rancher用户名和密码)
执行mvn --encrypt-password <password>
即可得到一个server密码
mvn --encrypt-password <password>
把这个加密串添加到settings.xml中server节点的password中 例如得到的加密密码是(2Db+TFdWDgQHlN7gBd1PAZHEC****************):
<server>
<id>deploymentRepo</id>
<username>admin</username>
<password>{2Db+TFdWDgQHlN7gBd1PAZHEC****************}</password>
</server>
重点来了
由于使用的是jib-maven-plugin打包,那么当前的设置怎么和插件连接起来,在上面的pom.xml中,我把账户的密码注释掉了,相当于没有在pom里面指定明确的用户名和密码。
使用以下的配置就可以实现和插件的互动
<pluginGroups>
<!-- pluginGroup | Specifies a further group identifier to use for plugin
lookup. <pluginGroup>com.your.plugins</pluginGroup> -->
<pluginGroup>com.google.cloud.tools</pluginGroup>
</pluginGroups>
<!--对应容器仓库权限的账号密码-->
<servers>
<server>
<id>registry.cn-hangzhou.aliyuncs.com</id>
<username>655454321@qq.com</username>
<password>{2Db+TFdWDgQHlN7gBd1PAZHEC****************}</password>
</server>
</servers>
2Db+TFdWDgQHlN7gBd1PAZHEC**************** 就是server的加密密码
好了,以上的准备已经完成
构建并提交镜像
使用以下命令开始构建
mvn compile jib:build
最后打包上传和上传完成,在rancher可以直接使用到镜像
在rancher启动镜像
进入rancher的操作界面
点击进入应用,点击添加服务
配置好端口的映射,内存的管理,cpu的管理,目录的映射关系,点击确定就可以启动了
更多推荐
所有评论(0)