对于实时监控不显示的解决方案可以直接看4. 总结
sentinel-dashboard就是一个SpringBoot项目,直接使用命令启动即可,所以可以自定义配置docker启动。
如果没有特殊需要可以直接下载jar,需要修改源码则下载源码包即可,下载地址:https://github.com/alibaba/Sentinel/releases,下载相应版本的jar包,比如sentinel-dashboard-1.8.1.jar
然后将下载好的jar包放到服务器的某一个目录下。并且在相同位置创建Dockerfile文件。
# java 版本
FROM java:8
# 挂载的docker卷
VOLUME /tmp
# 前者是要操作的jar包 后者自定义jar包名
ADD *.jar sentinel-dashboard.jar
# 定义时区参数
ENV TZ=Asia/Shanghai
# 设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# 配置启动命令,-D表示设置JVM参数 (xxx.xxx.xxx.xxx换成自己服务器的ip)
ENTRYPOINT ["java","-jar","-Dserver.port=8858","-Dcsp.sentinel.dashboard.server=xxx.xxx.xxx.xxx:8858","-Dproject.name=sentinel-dashboard","-Dsentinel.dashboard.auth.username=sentinel","-Dsentinel.dashboard.auth.password=123456","/sentinel-dashboard.jar"]
ENTRYPOINT
中的内容实际上就是执行jar包时执行的命令,可根据自己的需求和官方文档添加别的配置参数。
在服务器当前目录执行下述命令构建镜像
docker build -t sentinel-server .
执行下述命令创建、运行容器
docker run --name sentinel_9 -p 8858:8858 -p 8719:8719 --restart=always --privileged=true -d sentinel-server
再执行docker ps
就可以看见容器已经在运行了
执行docker logs sentinel_9 -f
可以试试查看容器的运行日志。
(本文省略对nacos的讲解)
<!-- sentinel 服务保护-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
下面这段配置得添加到nacos中。
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
流程和上述差不多,将服务的jar包和Dockerfile文件放在一个目录中。
Dockerfile文件内容
# 基础镜像使用Java
FROM openjdk:11.0.4
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo_user_server-exec.jar app.jar
# 定义时区参数
ENV TZ=Asia/Shanghai
# 设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# 运行jar包
# ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=config/application.yml","> log.txt &"]
# 以便于微服务配置
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=config/bootstrap.yml","> log.txt &"]
docker build -t demo_user_server_2 .
docker run -d -p 8100:8100 -v /root/docker_file/demo_project/demoUserServer/config:/config --name demo_user_server_2 demo_user_server_2
/root/docker_file/demo_project/demoUserServer/config
为我服务器上的路径,大家根据自己的实际情况修改。
执行docker ps
可以看到容器已经启动。
执行下述命令
# 创建一个名字为sentinel-net的网络
docker network create sentinel-net
# 查看已经创建的网络
docker network ls
# 查看sentinel-net网络的详细信息
docker network inspect sentinel-net
# 将容器sentinel_9和demo_user_server_2 连接到网络 sentinel-net
docker network connect sentinel-net sentinel_9
docker network connect sentinel-net demo_user_server_2
# 查看sentinel-net网络的详细信息
docker network inspect sentinel-net
# 重启容器sentinel_9和demo_user_server_2
docker restart demo_user_server_2 sentinel_9
之后就发现没问题了。
从网上总结的几个可能会导致Sentinel没有实时监控的原因。
1.2. Dockerfile文件内容
中设置时区参数3. 给docker容器创建网络
中创建网络(我就是这个问题。。)容器技术(二):Docker Network基础
docker network详解、教程
Sentinel(二)Docker搭建Sentinel 控制台环境搭建及使用介绍