docker部署spring boot并接入skywalking【部署篇】
首先给大家说声抱歉,大家看我之前这篇文章:docker部署spring boot并接入skywalking【探索篇】(https://www.cnblogs.com/windysai/p/15350506.html),应该是挺懵逼的,不单读者们看得迷迷糊糊,我估计以旁观者身份看,应该也觉得云里雾里。所以为了弥补我的过错,今天好好交代下整个部署流程。
这个测试是从线上业务拿下来的,线上的架构是前后端分离
前端:nginx代理转发到静态目录
后端:nacos注册中心,直接跑在操作系统的微服务jar包(没用到docker),数据库(mysql、mongo、redis)
整个测试,涉及公司内网3台服务器:服务器A用于jenkins发布,服务器B专门跑docker服务(跑nginx、nacos、jar),最后一台服务器C用于跑mysql数据库(原来已装有mysql,数据从线上测试环境同步过来,mongo和redis懒得装了,直接连线上的)
服务器 | 应用 | 补充说明 |
A | jenkins发布前后端任务 | 内网本来已经装有 |
B | docker服务(nginx、nacos、jar、skywalking) | |
C | mysql | mongo、redis连线上 |
一、准备工作
服务器C上面说过,已装有mysql,只需要把线上测试环境的表同步下来
叫开发帮忙在gitlab上的前端和后端git地址,帮我另起测试分支,将连接服务中心nacos的ip都从线上的改成公司内网虚拟机。最关键的是,前端登录接口要改成内网测试环境的。
二、skywalking部署
yaml文件参考探索篇的链接
docker-compose -f skywalking-docker-compose.yaml up -d
三、前端部署
jenkins写的pipeline,npm编译后直接发布到nginx代理的静态页目录
像我这里测试:docker start nginx 映射到宿主机的目录为 /usr/docker/nginx/html/项目目录/项目目录二级目录名
四、后端部署
1、docker部署启动nacos
用的是nacos的官方镜像:nacos/nacos-server
下面的docker run命令上的 NACOS_SERVERS ip 随意
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server -e NACOS_SERVERS=172.17.0.2:8848
启动之后需要进容器修改配置文件:
重启nacos生效:docker restart nacos
2、docker 部署微服务
探索篇已经说过,由三个目录组成:build、services、yaml。
build目录:基于skywalking-base 基础镜像来构建微服务镜像,包括一些环境变量声明
services目录:映射运行目录到docker里面,包括jar包和日志
yaml 目录:装有docker-compose.yaml文件,用于管理微服务启停
这里交代一下,有些问题我还处理好,导致不能用docker-compose 来启动微服务,今天测试完全是基于手动运行的,因为docker-compose跑的时候一直报错说找不到build进去的脚本startup.sh,导致容器内的jar包压根没有起来。怀疑是构建微服务镜像写的Dockerfile文件有问题,打进去的运行脚本:startup.sh 是放在/app目录下的,docker-compose文件映射的运行目录也是/app,估计会覆盖,导致脚本都搞没了(猜测,可能会有误导成分 = =)
自动化只能等明天上班再排查下了。。。今晚远程公司电脑都连不了,囧。。
docker run -itd --name windysai-sw -p 8080:8080 -v /root/test_sw/services/windysai:/app windysai:sw bash
这里假设返回容器id:465456456
(2)进入容器
docker exec -it 465456456 bash
(3)容器内手动运行jar包
java -Duser.timezone=GMT+08 -javaagent:/skywalking/agent/skywalking-agent.jar -jar windysai.jar >> out_windysai.log
整台服务器B的docker服务运行完是这样的
skywalking监控图:
前提是服务都已经成功注册到nacos上哈(服务列表能查到一堆微服务注册上来)
登录前端页面好,进行一系列骚操作(开玩笑),就是各种点击、同步,千万不要删除,或者增加啥。。。
拓扑图: