1.准备
1-1 机器四台
jenkins:192.168.20.200 master:192.168.20.201
slave01:192.168.20.202 slave02:192.168.20.203
1-2 测试项目
地址:https://code.aliyun.com/995586041/test.git
2.建立jenkins项目
1-1 安装jenkins https://my.oschina.net/u/2937605/blog/1602509
1-2 配置jenkins https://my.oschina.net/u/2937605/blog/1796310
这次我们将项目放到 master 的 /home/gh 文件夹下,注意这个文件夹必须在远程主机已经存在,否则会报错:
1-3 创建一个自由风格的项目:ipweb
1-4 源码管理
就是最上边的代码,代码里面就是一个springboot项目,仅提供一个获取本机IP的测试接口,可以自己准备,或者fork一份;接口地址:http://127.0.0.1:8080/ip
此项目结构如下:
application.yml
server:
port: 8080 #项目启动后的端口号
Dockerfile
FROM jre #基础镜像
MAINTAINER goldleaf #作者信息
ADD ./*.jar /home/gh/ipweb/ipweb.jar #这里是我们项目打包后的jar
CMD java -jar /home/gh/ipweb/ipweb.jar #容器启动时执行该命令
docker-stack.yml
version: '3' #文件版本
services:
ipweb:
image: ${IMAGE_NAME} #制作后的镜像名称
volumes:
- /home/log:/home/log #log地址,如果宿主机上没有该目录,会报错
networks:
- central #docker swarm集群的overlay网络
ports:
- 8090:8080 #开放端口
deploy:
replicas: 2 #容器实例个数
placement:
constraints: [node.role == worker] #指定容器只在子节点工作
networks:
central:
external:
name: central #docker swarm集群的overlay网络
1-5 mvn构建项目
maven装在jenkins机器上,打包之后,ssh 发送到mater机器
1-6 具体配置信息
1)这里将项目打包后的jar、Dockerfile、docker-stack.yml发送到master
2)制作相关镜像
3)镜像build之后,push到私有仓库,我自己搭建的欣慰不是内网,push速度太慢,就用了阿里提供的仓库,所以下边多了一步登陆阿里仓库的命令,如果不想或者没有条件搭建自己的搭建私有仓库,这里是阿里仓库的地址:https://dev.aliyun.com/search.html
4)docker stack deploy方式启动项目
3.检验项目
3-1 检查文件:/home/gh/ipweb
3-2 检查镜像:docker images
3-3 检查stack:docker stack ls
3-4 检查service:docker stack services gh
3-5 检查容器运行情况:docker service ps gh_ipweb
3-6 访问测试:curl 192.168.20.201:8090/ip