阿丹:
建木的搭建以及在jar包中的dockerfile文件的书写。已经完毕。现在开始使用建木的流程化部署来完成自动化部署。
进入我们自己配置的建木页面
新建一个分组,方便我们不同项目的管理
起名要求见名知意
使用图形项目
开始新建一个流程,用来自动化部署我们的项目。
建木提供了很多个官方节点
选择触发器等,通过一个个节点来形成通道实现自动化部署。
开始构建一个流程
逐个介绍一下:
1、webhook触发器:用来开始整个流程(后面会将用处)
2、 git clone从git上拉取代码进行操作
3、maven构建节点:可自定义执行maven指令
4、docker构建镜像:可操作文件中的dockerfile文件来进行定制执行。
5、ssh:执行自定义的命令
webhook触发器
在这里进行配置
点击获取到webhook。
去自己的代码管理上配置webhook
对webhook进行配置,将刚才的连接保存在URL中
配置触发事件
建议关闭ssl认证
添加webhook即可。在代码管理平台的代码触发上述勾选的时间之后。webhook就会根据这个链接来触发这个流程
git clone
执行对应的git动作
必须填写的内容:
1、用户名和密码是之前设置的密钥
2、需要我们去gitee或者在gitLab上面的
复制这里的克隆填入节点的git地址。
3、注意自己的分支是否正确
看到我们的分支main
更改下面的分支,默认为master
maven构建节点
在使用节点版本前的准备工作,准备对应版本的openjdk
docker pull openjdk:17-ea-slim
docker save -o opendjdk:17-ea-slim.tar openjdk:17-ea-slim
这里可以根据我们的需求来自己构建maven指令。
workspace:
mvn action:要使用的maven动作
因为我们要在线上自动化部署所以这里使用package
nexus:这里是与私服建立连接,如果没有可以不选
docker构建镜像
dockerhub与私服相关:不是必填选项
镜像名称:建议使用如图所示
镜像标签:推荐使用版本
镜像构建目录:
使用克隆下来的目录
禁用缓存:推荐开启
ssh
这里我先提供一个我写好的ssh文件
在使用的时候需要注意参数的修改,其中的注释写的很详细。
#!/bin/bash
# 定义所需参数
export repo="adn-ask"
export name=""
export tag=""
# 获取所有sh参数
# r 仓库地址 n 镜像名称 t 镜像标签
while getopts "r:n:t:" opt;
# 进行参数赋值
do
case ${opt} in
r )
repo=$OPTARG
;;
n )
name=$OPTARG
;;
t )
tag=$OPTARG
;;
\? )
echo "Invalid option: $OPTARG" 1>&2
exit 1
;;
: )
echo "Invalid option: $OPTARG requires an argument" 1>&2
exit 1
;;
esac
done
# 检查必要参数是否已经输入
if [ -z "${name}" ]; then
echo "-n 镜像名称 为必传参数"
exit 1
fi
if [ -z "${tag}" ]; then
echo "-t 镜像标签 为必传参数"
exit 1
fi
shift $((OPTIND -1))
# 最后得到docker镜像
export dockerImage="${repo}/${name}:${tag}"
# 停止并删除之前的容器
docker rm -f ${name}
# 删除镜像
docker rmi ${dockerImage}
# 重新下载之前镜像
docker pull ${dockerImage}
# 启动镜像
docker run -d \
--name ${name} \
--network dev \
--privileged=true \
--restart=always \
-v $SIXIANG_LOGS/${name}:/home/adn-ask/logs/${name} \
${dockerImage}
将写好的sh文件放在服务器的文件夹下面。
代码如下:
sh /usr/local/docker/yunseven/restartServer.sh -n -t
中间的参数是根据sh中的文件进行书写的。
一定要看好自己的路径时候正确。
到这里一个流程就构建完毕了。
流程启动测试
第一次运行因为要下载很多依赖所以有点慢,需要耐心等待一下。
前面都完成了但是在docker镜像这里出现了错误。查看错误日志。
这里是错误日志。
这个问题表示没有找到dockerfile文件。
问题的原因是这里的点没有去掉。各位一定要注意。
注意:还有一个问题就是需要dockerHub,这里的dockerHub要么使用私服要么使用官方的dockerHub。这里我们使用dockerHub.
这里第一次会出现这个问题
根据错误信息来看,这个问题可能是由于在新的服务器上没有登录到私服并创建允许的连接引起的。私服可能需要进行一些特定的身份验证或配置才能与其建立连接。
你可以尝试以下步骤来解决这个问题:
-
确保你已经在新的服务器上登录到了私服。你可能需要提供有效的身份验证凭据(用户名和密码、访问令牌等)才能成功登录。
-
如果你已经登录到私服但仍然无法连接,请检查服务器的网络设置以确保服务器可以访问私服的地址和端口。你可以尝试使用常见的网络工具(如ping或telnet)来测试服务器与私服之间的连通性。
-
如果你使用了代理服务器来访问私服,请确保代理服务器的配置正确,并且服务器能够通过代理访问私服。
配置Docker信任地址
私服采用的是http协议,默认不被Docker信任,所以需要做一个配置
#打开要修改的文件
vi /etc/docker/daemon.json
#添加内容:
{
"insecure-registries":["http://192.168.0.101:81"]
}
#重新加载
systemctl daemon-reload
#重启docker
systemctl restart docker
配置之后在两个服务器上登录到私服的地址一定要重启
使用代码
docker login https://ip地址:16000/v2/
输入私服的账号和密码来建立连接!一定要记得重启!
出现这个错误在docker镜像push的时候