作者:jiajiajy323 | 来源:互联网 | 2023-08-29 18:38
添加(dockerDockerfile)或修改:springcloud-docker-clusterspring-basespring-eurekasrcmaindockerDoc
添加(docker/Dockerfile)或修改:springcloud-docker-cluster/spring-base/spring-eureka/src/main/docker/Dockerfile
/root/111/gitee_cangku/rancher_springcloud/为本地仓库的路径:
由于直接下载java:8镜像jenkins会卡主~这里采取把镜像下载下来传到私有仓库,dockerfile修改从私有仓库获取
docker pull java:8
docker tag java:8 192.168.109.137:5000/java:8
docker push 192.168.109.137:5000/java:8
备注:
vim /root/111/gitee_cangku/rancher_springcloud/spring-base/spring-eureka/src/main/docker/Dockerfile
FROM 192.168.109.137:5000/java:8
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
#将本地文件夹挂载到当前容器
#VOLUME /tmp
ADD spring-eureka-0.0.1-SNAPSHOT.jar app.jar
#RUN ["/bin/bash","-c","touch /app.jar"]
#指定JAVA 环境变量
#ENV JAVA_HOME /jdk/jre
#ENV PATH $PATH:$JAVA_HOME/bin
#ENV CLASSPATH .:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#开放8000端口
EXPOSE 8000
#配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]
修改本地仓库代码eureka中dockerfile文件,并提交到gitee
修改代码中的dockerfile文件(并重新提交、打包,可以和下面的提交一起)
并修改:
/root/111/gitee_cangku/rancher_springcloud/spring-base/spring-eureka/src/main/resources/目录下的
相互注册:即application.yml使用的是active: 141(即application-141.yml),如果选择部署机器标签为138,那么application-141.yml中hostname:ip就应该为139机器
这里我的安排是:141 对应 application-141.yml (hostname:192.168.109.138)部署机器为139
application-141.yml
application-142.yml
中的hostname:ip 地址
结合自己环境修改代码中的配置
spring:
profiles:
# active: 141
active: 142
application.yml
server:
port: 8000
eureka:
client:
service-url:
defaultZone: http://${customConfig.security.username}:${customConfig.security.password}@${customConfig.eureka.server.hostname}:${server.port}/eureka/
register-with-eureka: true
fetch-registry: true
server:
peer-node-read-timeout-ms: 2000 #读取对等节点服务器复制的超时的时间,单位为毫秒,默认为200
spring:
application:
name: spring-eureka
security:
user:
name: ${customConfig.security.username}
password: ${customConfig.security.password}
management:
endpoint:
health:
show-details: always #健康情况-展示全部详情,否则只展示status信息
customConfig:
eureka:
server: #eureka的配置
hostname: 192.168.109.138
security: #security的配置
username: admin
password: admin123
#Eureka Server在启动的时候会创建一个定时任务,默认每隔一段时间(默认为60秒)将当前清单中超时(默认为90秒)没有续约的服务剔除出去。
application-141.yml
server:
port: 8000
eureka:
client:
service-url:
defaultZone: http://${customConfig.security.username}:${customConfig.security.password}@${customConfig.eureka.server.hostname}:${server.port}/eureka/
register-with-eureka: true
fetch-registry: true
server:
peer-node-read-timeout-ms: 2000 #读取对等节点服务器复制的超时的时间,单位为毫秒,默认为200
spring:
application:
name: spring-eureka
security:
user:
name: ${customConfig.security.username}
password: ${customConfig.security.password}
management:
endpoint:
health:
show-details: always #健康情况-展示全部详情,否则只展示status信息
customConfig:
eureka:
server: #eureka的配置
hostname: 192.168.109.139
security: #security的配置
username: admin
password: admin123
#Eureka Server在启动的时候会创建一个定时任务,默认每隔一段时间(默认为60秒)将当前清单中超时(默认为90秒)没有续约的服务剔除出去。
application-142.yml
推送依据自我环境修改完的代码到远程:
git add .
git commit -m "说明"
git push origin master #(git push origin 本地分支名:refs/remotes/远程分支名) 将代码推至远程就可以了
在jenkins上构建:
新建一个任务(springcloud-eureka)--构建一个maven项目--确定
源码管理(git,并配置)
构建触发器 去掉勾
spring-base/spring-eureka/pom.xml
clean package -Dmaven.test.skip=true
点击maven的高级按钮
DEFAULT
settings file 选择文件系统中的setting文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml
Add post-build setp 中选择(执行shell)--
cp /var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/target/
保存
在jenkins里安装 云docker 插件:
系统设置--新增一个云docker(我的版本中Cloud提示The cloud configuration has moved to a separate configuration page.)点击到新页面配置--新增--docker--Docker Cloud details..,把前面挂载的docker.sock 文
件写入Docker Host URL中:unix:///var/run/docker.sock,点击测试,测试成功可以看到版本号;保存
继续配置 springcloud-eureka:配置docker的镜像构建
Post Steps--Add post-build setp--Build/Publish Docker Image
Directory for Dockerfile(工作路径):/var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/target/
Cloud选择先前添加docker云配置的名称:docker
Image:192.168.109.137:5000/spring-eureka
Push image打钩
Clean local images打钩
保存
然后jenkins构建看看
成功后查看镜像:curl -XGET http://192.168.109.137:5000/v2/_catalog
rancher部署eureka服务,部署工作负载
spring-eureka
192.168.109.137:5000/spring-eureka
端口 8000 TCP HostPort 8000
主机调度 deploy=worker 因为eureka要相互注册,所以这里标签不用前面的,我们改为iprange=138
高级选项 网络 是否选用主机网络(是),后台会在启动时加上--net=host命令,表示不虚拟出网络
138上的eureka启动后,139的我们需要修改代码中的配置文件重新打包;
这里我的安排是:142 对应 application-142.yml (hostname:192.168.109.139)部署机器为138
vim /root/111/gitee_cangku/rancher_springcloud/spring-base/spring-eureka/src/main/resources/application.yml 注释active: 141,启用active: 142
提交代码:
git add .
git commit -m "修改配置部署138"
git push origin master
jenkins重新打包,139因为已经部署了本地有老版本的包,重启不影响,只会改变仓库的镜像包
rancher 克隆一个spring-eureka服务并修改:
spring-eureka-138
主机调度:iprange = 138
删除138机器的上的镜像:docker rmi 192.168.109.137:5000/spring-eureka:latest
然后启动
检查:
1.日志查看
2.rancher访问eureka注册页面可以看到DS Replicas为相互地址,并且俩台都已经注册成功,如下:
SPRING-EUREKA n/a (2) (2) UP (2) - 192.168.109.138:spring-eureka:8000 , 192.168.109.139:spring-eureka:8000
至此eureka集群完毕