运用docker的话,主要是通过三种方式
这种方式适用于团队人数不多,项目不大的情况下
在服务器里面整一个docker镜像,在docker镜像里面内置了jdk,这里面没有运行的jar包,正在运行的jar包是在宿主主机的某一个目录里面
将宿主主机里面的目录与docker容器相互关联,当访问docker的某一个目录的时候,会映射到宿主主机对应的目录
如果想停机更新一下的话,就将宿主主机对应的目录清理一下,重启一下docker容器即可
该方式更加时候云原生的环境
服务器上面有一个docker容器,通过Jenkins推送jar包和dockerfile,dockerfile里面配置好了如何去生成一个镜像出来,当服务器接收到这两个文件后,执行一次build,创建出一个新的镜像,使用这个新的镜像去生成一个容器
服务器里面有docker和另一个服务器里面存放的docker私服(如Harbor私服)
docker的服务器接收到dockerfile和jar包,生成新的镜像,这个镜像直接推送到私服(Harbor)里面,过后通过k8s集群从私服里面去拉取这个镜像,k8s里面也是需要docker环境,在这里拉取到镜像后,去生成多个容器去运行
准备一台测试服务器的 docker环境
准备支持jdk的镜像,dockerfile文件如下:
FROM openjdk:11
EXPOSE 8080
WORKDIR /root
ADD jarfile/demo*.jar /root/app.jar
ENTRYPOINT ["java","-jar","/root/app.jar"]
将jar包打包到镜像里面
docker build -t demo .
docker run -d -p 8080:8080 --name demo-out -v /root/jarfile/demo-1-0.0.1-SNAPSHOT.jar:/app.jar openjdk:11 java -jar app.jar
在Jenkins里面去自动化的部署,在Jenkins构建之前需要去清理一下文件、将现在正在运行的容器给删除掉,后面才是构建,最后才是之前使用的命令
配置Jenkins:
将对应目录下的文件给清理掉(这里是root目录),并将容器给停掉
构建之前的操作结束后,现在去执行build的操作,build操作配置没有问题的话,便去配置post steps配置
在运行之前,在服务器上面先去将对应的镜像给创建完,在Jenkins里面便直接去运行这个镜像(上面我们已经构建了对应的镜像了)
配置Jenkins:
清理工作:将旧的dockerfile清理、jar包清理、镜像容器清理
构建:在项目里面新建一个目录并配置dockerfile文件内容,将其和代码一起提交到git上面去
重新build镜像(docker):
将dockerfile文件发送,并去掉前缀,并发送到root目录里面
开始执行build操作:打包镜像,run镜像
在虚拟机里面设置了三台Jenkins服务器地址,以这三台去创建Jenkins集群,去添加两个Jenkins节点
配置节点:进入配置页面
进去后,会进入下面的界面
点击新建节点
进行如下配置
输入完名字后,点击create,会出现更加详细的配置
这里有两种用法,如下:
在这里去添加凭证等内容:即Jenkins的服务器地址等内容
点击保存后,界面便成如下的了
如果配置没有问题的话,过了一会儿便会出现下面的显示
配置第二台Jenkins,与上面的配置差不多
选择如果去对任务进行构建的话,还是只能构建一个,之前的构建成功后,后面的才能继续构建,还没有实现并发的一种效果
如果想要实现负载的效果的话,还是需要去配置一下任务的一些配置
进入配置后,会发现多了一个选项,如下
将上面的勾选上,以后在运行的时候便会自动的去分配当前的构建任务在哪一个节点上运行
现在去进行构建的话,会发现会在多个节点运行
在下面可以去配置并发构建的个数(在节点的配置里面)
在任务配置里面,也可以去限制项目运行的节点,如下:在02和03去运行