docker运行tomcat服务(使用 docker部署tomcat并接入skywalking的使用)
docker运行tomcat服务
使用 docker部署tomcat并接入skywalking的使用目录
- 一、概述
- 二、使用 docker 部署 tomcat 并接入 skywalking
- 总结
上一篇文章介绍了使用 docker 部署 spring boot 并接入 skywalking,其中描述了使用 docker-compose 搭建 skywalking,这一篇文章就不介绍 skywalking 的搭建了,这里主要记录一下使用 docker 部署一个 tomcat 并接入 skywalking 进行服务链路追踪。
二、使用 docker 部署 tomcat 并接入 skywalking关于如何将 tomcat 应用接入 skywalking 官网有如下描述:
详细信息可以查看官网:skywalking agent 官网
Linux Tomcat 7 / Tomcat 8
在tomcat/bin/catalina.sh
第一行添加以下内容:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
Windows Tomcat 7 / Tomcat 8
在tomcat/bin/catalina.bat第一行添加以下内容:
set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"
JAR File 或 Spring Boot
在应用程序的启动命令行中添加 -javaagent
参数:
java -javaagent:<skywalking-agent-path> -jar yourApp.jar
注意:
-javaagent
参数一定要在-jar参数之前。
由于我这里是使用 docker 部署 tomcat ,所以不打算修改 tomcat/bin/catalina.sh
文件,而且查看tomcat/bin/catalina.sh
文件,有如下描述:
在下图中定义了读取 setenv.sh
的脚本:
意思是:不要在catalina.sh
这个脚本中设置变量,为了让你的自定义变量分离,应该把自定义的环境变量放在CATALINA_BASE/bin/setenv.sh
文件中,除此之外,经过我测试发现,可以直接使用环境变量的方式进行设置,下面我将以两者方式的配置进行说明。
1、将自定义的变量写在 setenv.sh 文件中
首先我们需要下载 skywalking agent,关于下载 agent 可以查看本文开头的文章,之后将agent 放在一个可以访问的目录,我这里是测试,所以将 agent 目录复制到了我的 Dockerfile 的同级目录,其中 Dockerfile
的内容如下:
FROM tomcat LABEL maintaner="xiniao" COPY agent /usr/skywalking/agent WORKDIR /usr/local/tomcat/bin RUN echo 'CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar";' > setenv.sh ENV SW_AGENT_NAME="my-spring-demo" \ SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800" WORKDIR /usr/local/tomcat/webapps/ROOT COPY target/my-spring-demo.war my-spring-demo.war RUN jar -xf my-spring-demo.war
关于 skywalking agent 的其他配置,则可以通过环境变量的方式进行定义,比如这里指定了 skywalking 中显示的服务名为 ENV SW_AGENT_NAME="my-spring-demo"
以及 skywalking 的后端服务地址 SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"
,我们访问 skywalking ui 可以看到如下图所示内容:
2、使用环境变量指定 skywalking agent 的路径
详细的 Dockerfile
内容如下:
FROM tomcat LABEL maintaner="xiniao" COPY agent /usr/skywalking/agent ENV CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar" \ SW_AGENT_NAME="my-spring-demo-env" \ SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800" WORKDIR /usr/local/tomcat/webapps/ROOT COPY target/my-spring-demo.war my-spring-demo.war RUN jar -xf my-spring-demo.war
使用如下命令构建镜像:
docker build -t my-spring-demo .
使用如下命令运行容器:
docker run --rm -p 8080:8080 my-spring-demo
访问 skywalking ui 可以看到监控的信息如下:
总结这里主要介绍了使用 docker 部署 tomact 并接入 skywalking 的使用,因为在网上并没有查到太多相关的信息,所以这里记录下来,需要对有需求的小伙伴提供一些帮助。这里还是存在一些问题,比如这里 skywalking agent 直接打到镜像文件里面并不友好,个人觉得可以自定义一个 tomcat 的基础镜像,并将 skywalking agent 打到基础镜像中,这样所有的 tomcat 引用这个基础镜像来构建镜像,就可以实现接入 skywalking。如果是使用 k8s 部署的话,可以在 pod 中定义一个初始容器,在 pod 启动时,将初始容器中的 skywalking agent 复制到我们的应用中,关于如何在 k8s 使用 skywalking,并且无侵入的将 pod 的应用接入 skywalking ,我将在下一篇文章中介绍。
到此这篇关于使用 docker部署tomcat并接入skywalking的使用的文章就介绍到这了,更多相关 docker部署tomcat接入skywalking内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- docker导出日志(excel导出在docker环境中总是失败的问题)
- docker 启动rabbitmq(docker安装rabbitmq无法进入管理页面的问题)
- docker与本地存储(docker 设置windows存储路径的操作)
- 将docker中的镜像打包教程(本地使用docker打包部署镜像的方法)
- docker怎么用端口连接容器(使用docker更改容器内root密码的操作)
- idea连接不上docker(IDEA使用Docker插件远程部署项目到云服务器的方法步骤)
- docker容器网络设置(对docker中的overlay式网络详解)
- 使用TLS加密通讯远程连接Docker的示例详解(使用TLS加密通讯远程连接Docker的示例详解)
- docker 容器移植(Docker构建kubectl镜像的实现步骤)
- dockerrun执行脚本(docker run和start的区别说明)
- docker启动指定容器ip(Docker每次启动容器,IP及hosts指定的操作)
- docker指定基础镜像命令(Docker重命名镜像名称和TAG操作)
- docker下运行python3(使用Docker+jenkins+python3环境搭建超详细教程)
- docker怎么连主机数据库(docker 安装nacos并配置数据库的教程详解)
- docker怎么解决隔离性问题(docker启动ES内存溢出的解决方案)
- docker的漏洞(一次docker错误的耗时排查过程记录)
- 战 疫 时刻 致敬每一位石化大学的 守护者(战疫时刻)
- 老弄堂里的市井味道(老弄堂里的市井味道)
- 小米音乐可绑定QQ音乐, QQ音乐 真的会消失在小米的设备上吗(小米音乐可绑定QQ音乐)
- 小米Watch S1评测 或许能成为小米冲击高端可穿戴设备的里程碑(小米WatchS1评测或许能成为小米冲击高端可穿戴设备的里程碑)
- 手机QQ与小米路由器在一起 明天揭晓,敬请期待(手机QQ与小米路由器在一起)
- 小米音乐与 QQ 音乐合作,便捷迁移会员(小米音乐与QQ音乐合作)
热门推荐
- 安装mysql中要注意什么问题(安装Mysql时可能会遇到的一些疑难杂症)
- python爬虫第一本书(我用Python抓取了7000 多本电子书案例详解)
- angular兄弟组件调用方法(Angular封装WangEditor富文本组件的方法)
- asp.net func 委托
- MVC中数据验证
- win7iis服务器的安装与配置(Win7怎么装IIS 安装IIS具体方法安装教程)
- asp.net中Server.MapPath的使用
- javascript对象添加方法(详解JavaScript面向对象实战之封装拖拽对象)
- Ext.query与Ext.select 的用法
- vue常用的指令和修饰符(Vue中 Vue.prototype使用详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9