采用JIB在无docker环境构建一般镜像
前言
针对在没有docker环境的开发构建推送镜像的困扰,本教程整合了JIB-CLI的构建推送过程,供大家参考。
google jib 是Google于18年7月发布的一个针对Java应用的构建镜像的工具(支持Maven和Gradle) ,好处是能够复用构建缓存,能够加快构建,减小传输体积,并且让Java工程师不需要理解Docker相关知识就可以简单构建镜像并且发布到指定registry里(不需要docker build , tag, push)
安装
这里介绍的是JIB的命令行版本,相比插件版本,更自由灵活,可以用于构建发布像vue前端工程的镜像。
通过命令如下命令,查看帮助,就可以使用了。
D:\Develop\docker\jib>jib -h
Usage: jib [-hV] [@<filename>...] COMMAND
A tool for creating container images
[@<filename>...] One or more argument files containing options.
-h, --help Show this help message and exit.
-V, --version Print version information and exit.
Commands:
build Build a container
jar Containerize a jar
war Containerize a war
设置镜像代理
编辑 Google\Jib\Config\config.json
这个文件,可以添加修改 docker镜像,我们一般对设置 registry-1.docker.io
这个镜像代理就可以。
{
"disableUpdateCheck": false,
"registryMirrors": [
{
"registry": "registry-1.docker.io",
"mirrors": ["docker.1ms.run"]
},
{
"registry": "quay.io",
"mirrors": ["private-mirror.test.com"]
}
]
}
构建发布
下面通过test-front
工程的例子来举例说明构建发布过程。
首先我们创建一个类似Dockerfile
的构建脚本,默认名称为 jib.yaml
来转化 dockerfile的命令,如下:
apiVersion: jib/v1alpha1
kind: BuildFile
from:
image: nginx:1.27.4
creationTime: 2000
exposedPorts:
- "80/tcp"
cmd:
- "nginx"
- "-g"
- "daemon off;"
layers:
entries:
- name: "config"
files:
# 删除nginx默认配置
- src: rm
dest: /etc/nginx/conf.d/.wh.default.conf
# 添加自定义nginx配置
- src: nginx.conf
dest: /etc/nginx/conf.d/nginx.conf
- name: "frontend"
properties:
filePermissions: "777"
files:
# 添加fpt前端构建文件
- src: "test"
dest: "/usr/share/nginx/html"
将文件 另存到合适目录,将脚本所需的 nginx配置及前端构建资源,放置一起
通过如下命令推送
D:\Develop\docker\jib>jib build --allow-insecure-registries --target=harbor.domain/test-front:0.0.1 --to-username=admin --to-password=Harbor12345 -c projects/test-front
查看harbor 可看到推送成功。
总结
在受网络限制的环境中,没有docker环境作为跳板,就可以快速发布到对应harbor 仓库,速度比较块,简洁方便,但是在cli模式下 无法生成本地tar包,也可以用 maven插件结合构建资源来 从代码一键推送。
参考网址:https://github.com/GoogleContainerTools/jib/tree/master/jib-cli
评论