天天看点

利用jib上传镜像到私服

背景

由于不想在开发机子上安装docker环境,并且可以在本机上构建镜像,并上传到私服,所以想用google去年开源的库jib来试试,这里把具体的操作记录下来,方便自己查看

前期准备

  1. keystore-explorer
  2. gradle
  3. 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,那么在如下界面查看即可

利用jib上传镜像到私服

这里的路径是jdk的路径,那么到时候就修改jdk下面的jre/lib/security/cacerts即可

导入证书

启动 KeyStore Explorer软件,

选择Java runtime

打开Tools ->Perferences

利用jib上传镜像到私服

在这里选择证书的位置

  1. 然后在首页导入证书

    Open CA Certificates KeyStore

    利用jib上传镜像到私服
    在工具栏点击导入按钮把证书导入,并保存
    利用jib上传镜像到私服

记住一定要保存才生效,还有如果证书在C盘的话,可能会保存不成功,可以把证书移出来,修改后,再复制进去

操作完上面的步骤后,就可以利用Jib上传镜像到自谦ssl的私有仓库了

利用jib上传镜像到私服

操作之后控制台日志

利用jib上传镜像到私服

去私服上看一下

利用jib上传镜像到私服

ok,到这里,基于Jib操作自谦证书的私有仓库都解决了