一、.Jib -- Java 应用构建容器镜像
1.Jib介绍
Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。
通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成到 Maven 和 Gradle中 —— 只需要将插件添加到构建中,就可以立即将 Java 应用程序容器化
2.以springboot项目为例 ,在gradle中使用Jib
修改build.gradle文件
#加入jibapply plugin: "com.google.cloud.tools.jib" plugins { id 'com.google.cloud.tools.jib' version '1.1.2'} group = 'com.example.zoe'version = '0.0.4' ext { set('registryUrl',"registry.cn-hangzhou.aliyuncs.com") set('registryNamespace', "仓库名称") set('registryUsername',"用户名") set('registryPassword',"密码")} jib { from { image = "java:8" } to { image = "${registryUrl}/${registryNamespace}/${project.getName()}" tags = ["latest","${project.version}".toString() ] auth { username = "${registryUsername}" password = "${registryPassword}" } } container { /** * 设置jvm的启动参数 * user.timezone - 解决Java程序的时区问题 */ jvmFlags = ['-Duser.timezone=Asia/Shanghai'] }}
3.修改版本version,双击Jib就可以打包上传至镜像仓库 或者gradle jib
等待运行100%完成
阿里云仓库中可以看到刚刚提交的版本0.0.4
二、Dockerfile--创建一个nginx镜像传至阿里云仓库
1.简介:
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
2.环境 :linux环境, docker 创建一个nginx镜像
3.步骤
步骤1:在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
FROM nginxRUN echo '这是nginx镜像' > /usr/share/nginx/html/index.html
(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
Dockerfile中FROM 和 RUN 指令的作用
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
shell 格式:
RUN <命令行命令># <命令行命令> 等同于,在终端操作的 shell 命令。
exec 格式:
RUN ["可执行文件", "参数1", "参数2"]# 例如:# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大
FROM centosRUN yum install wgetRUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"RUN tar -xvf redis.tar.gz以上执行会创建 3 层镜像。可简化为以下格式:FROM centosRUN yum install wget \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \ && tar -xvf redis.tar.gz
如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像
步骤2:开始构建镜像
在 Dockerfile 文件的存放目录下,执行构建动作。
以下示例,通过目录下的 Dockerfile 构建一个 nginx:test(镜像名称:镜像标签). 注:最后的 . 代表本次执行的上下文路径
docker build -t nginx:test .
构建成功
步骤三:查看镜像
步骤四:docker 运行上述镜像
更多详细请参考docker 官方网站,或者菜鸟教程
最近才意识到:学习新东西最快的途径是官方资源 ,全面且系统 知道的晚了些 ,错过了好多学习的机会
三、Dockerfile--打包前端项目至阿里云仓库
环境:windows环境,Vue项目
1.Dockerfile 文件来定制一个镜像
文件:Dockerfile,放置在前端项目的根目录下,内容如下:
FROM docker.io/library/nginx:latest #基于nginx的镜像LABEL MAINTAINER="zoe" #可以不需要LABEL NAME="XX系统" # 覆盖default配置COPY nginx.conf /etc/nginx/conf.d/default.conf # 复制配置文件COPY dist/ /usr/share/nginx/html #复制项目文件到nginx的html目录下 EXPOSE 80 #暴露80端口
此操作的目的是:封装了一个新的nginx镜像,并将当前的前端项目build成功之后复制到nginx对应得目录下,并且暴露80端口
(请只字不差的阅读,有时候离成功就差一点点,多一点耐心,大家都是这样经历过来的,你并不孤单)
2.文件nginx.conf,位置在前端项目的根目录下
server { listen 80; server_name localhost; root /usr/share/nginx/html; location / { add_header Cache-Control no-store; try_files $uri $uri/ /index.html; }}
3.build.sh 文件 用来快速打包成镜像,运行的时候必须有docker环境 ,windows需要安装Docker Desktop
#!/usr/bin/env sh #======================# 打包构建自动化部署代码#====================== version=$1echo "构建版本为:" $version #yarn install#yarn build#npm installnpm run build#docker build -t 镜像仓库地址:版本号 . 如下,注最后的.不能丢 版本号要每次更新docker build -t registry.cn-hangzhou.aliyuncs.com/zoe/zoe:版本号 .docker push registry.cn-hangzhou.aliyuncs.com/zoe/zoe:1.0.8
4.上述三个文件的位置:
Dockefile,nginx.conf,build.sh 如上图都在项目的根目录下 修改build.sh里面的版本号之后 ,在docker desktop启动时运行build.sh
正常是提示打包百分比 100%之后就已经成功将镜像发送至阿里云镜像仓库
关注
如果有问题,请在下方评论
想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码