docker部署spring boot并接入skywalking【部署篇】

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 

启动之后需要进容器修改配置文件:

/home/nacos/conf/application.properties,主要是mysql连接信息改成公司服务器C的配置信息

重启nacos生效:docker restart nacos

没什么问题的话(关防火墙),访问地址应为:http://服务器B的ip地址:8848/nacos/#/login

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,估计会覆盖,导致脚本都搞没了(猜测,可能会有误导成分 = =)

  自动化只能等明天上班再排查下了。。。今晚远程公司电脑都连不了,囧。。

手动运行流程介绍
假设我已经build好了一个微服务镜像文件:叫 windysai.sw(运行docker images能查到)
 
(1)docker映射目录和端口,做容器内外关联
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上哈(服务列表能查到一堆微服务注册上来)

  登录前端页面好,进行一系列骚操作(开玩笑),就是各种点击、同步,千万不要删除,或者增加啥。。。

 拓扑图:

 

原文地址:https://www.cnblogs.com/windysai/p/15404429.html