背景
由于不想在开发机子上安装docker环境,并且可以在本机上构建镜像,并上传到私服,所以想用google去年开源的库jib来试试,这里把具体的操作记录下来,方便自己查看
前期准备
- keystore-explorer
- gradle
- java项目
先上代码
docker.gradle
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:0.9.11"
}
}
apply plugin: com.google.cloud.tools.jib.gradle.JibPlugin
jib {
from {
image = 'openjdk:8-jre-alpine'
}
to {
image = '192.168.30.100:8888/invoice:latest'
auth {
username = 'admin'
password = 'admin123'
}
}
container {
entrypoint = ['sh', '-c', 'chmod +x /entrypoint.sh && sync && /entrypoint.sh']
ports = ['8082', '5701/udp' ]
environment = [
SPRING_OUTPUT_ANSI_ENABLED: 'ALWAYS',
JHIPSTER_SLEEP: '0'
]
useCurrentTimestamp = true
}
}
入口配置文件 entrypoinit.sh
#!/bin/sh
echo "The application will start in ${JHIPSTER_SLEEP}s..." && sleep ${JHIPSTER_SLEEP}
exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -cp /app/resources/:/app/classes/:/app/libs/* "com.jhipster.demo.invoice.InvoiceApp" "[email protected]"
解释一下上面的配置文件,jib的配置文件中to下面的东西上传到的私服地址,由于我们的私服用的自签证书,那么这里就会报错误,原因是jib不支持自签证书的操作,不过他们官方提到了一个操作方法
这里大概说一下,jib不支持自签https证书的docker registry,jib使用jvm的ca证书验证体系,那么只要把证书 添加到jvm的信任名单里即可,这会影响运行在上面的所有java程序,当您使用其他JRE或升级时,您还需要重新导入证书
使用KeyStore Explorer
将自谦证书导入到JVM的最简单方法是使用KeyStore Explorer(这是图形化操作,不过我认为命令行也一样),
安装KeyStore Explorer
识别自己构建工具使用的jre
我这里使用的是Idea,那么在如下界面查看即可
这里的路径是jdk的路径,那么到时候就修改jdk下面的jre/lib/security/cacerts即可
导入证书
启动 KeyStore Explorer软件,
选择Java runtime
打开Tools ->Perferences
在这里选择证书的位置
-
然后在首页导入证书
Open CA Certificates KeyStore
在工具栏点击导入按钮把证书导入,并保存
记住一定要保存才生效,还有如果证书在C盘的话,可能会保存不成功,可以把证书移出来,修改后,再复制进去
操作完上面的步骤后,就可以利用Jib上传镜像到自谦ssl的私有仓库了
操作之后控制台日志
去私服上看一下
ok,到这里,基于Jib操作自谦证书的私有仓库都解决了