Docker 系列:打包新镜像到阿里云镜像仓库
dddd
一、.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文件
#加入jib
apply 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 nginx
RUN 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 centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN 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=$1
echo "构建版本为:" $version
#yarn install
#yarn build
#npm install
npm 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%之后就已经成功将镜像发送至阿里云镜像仓库
关注
如果有问题,请在下方评论
想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码
更多推荐
所有评论(0)