1、前置
1、找到自己对应的版本
2、运行镜像, 配置参数
3、日志挂载
4、说明一些对应的可配置参数
5、 重点说明
2、版本对应
我用的是Spring Cloud Alibaba这一套,
Spring Cloud Alibaba: 2.2.1.RELEASE
我对应的sentinel版本就是: 1.7.1
版本说明地址在: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
3、配置运行镜像
我这边用的镜像也是网上一样: bladex/sentinel-dashboard
// pull镜像:对应的版本
docker pull bladex/sentinel-dashboard:1.7.1
①、docker-compse
docker-sentinel.yaml
# Compose 版本 Version 2支持更多的指令。Version 1将来会被弃用。
version: "3"
# 定义服务
services:
# 为project定义服务
sentinel:
image: bladex/sentinel-dashboard:1.7.1
ports:
- 8858:8858
environment:
# 是否开启登录鉴权,仅用于日常测试,生产上不建议关闭, 默认true
auth.enabled: "true"
# 登录控制台的用户名,默认为 sentinel
sentinel.dashboard.auth.username: admin
# 登录控制台的密码,默认为 sentinel
sentinel.dashboard.auth.password: admin123
# 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
server.servlet.session.timeout: 7200
restart: always
container_name: sentinel
privileged: true
docker-compose -f docker-sentinel.yaml up -d
②、docker run
docker run --name sentinel -p 8858:8858 -e auth.enabled="true" -e sentinel.dashboard.auth.username=admin -e sentinel.dashboard.auth.password=admin123 -e server.servlet.session.timeout=7200 -d bladex/sentinel-dashboard:1.7.1
4、日志以及挂载
位置有了, 就随便挂载吧
# docker-compose挂载
volumes:
- "E://Docker/sentinel/logs:/root/logs/csp"
# docker run 挂载
-v "E://Docker/sentinel/logs:/root/logs/csp"
5、可配置参数
启动配置项: https://github.com/alibaba/Sentinel/wiki/%E5%90%AF%E5%8A%A8%E9%85%8D%E7%BD%AE%E9%A1%B9
控制台配置项(鉴权): https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0
随便截了两张图, 具体的参数, 以及可配置参数, 大家根据我贴的链接可以自行查看, 根据所需配置
6、重点说明
重点说明的来了:
其中有些参数我们通过-e指定环境变量是配置不了, 基于我们目前使用的镜像:bladex/sentinel-dashboard, 因为优先级的问题
# 查看一下镜像的详细信息
docker inspect bladex/sentinel-dashboard:1.7.1
这段命令解释一下就是:
java -Djava.security.egd=file:/dev/./urandom -Dserver.port=8858 -Dcsp.sentinel.api.port=8719 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard -jar app.jar
解决方法, 第一种我下面所列, 第二种就是自己打包sentinel镜像:
通过docker -entrypoint进行Entrypoint的覆盖(必须通过脚本方式, 下一篇博客会进行说明!)
docker-sentinel.sh:
#!/bin/bash
java -Djava.security.egd=file:/dev/./urandom -Dserver.port=8898 -Dcsp.sentinel.api.port=8719 -Dcsp.sentinel.dashboard.server=localhost:8898 -Dproject.name=sentinel -jar /bladex/sentinel/app.jar
# docker run 方式 (既然直接覆盖了, 我们也就没有必要在使用-e命令了, 直接在脚本里面进行指定)
docker run --name sentinel -p 8858:8898 -v "E:/Docker/sentinel/sh/:/docker/sentinel/" -e auth.enabled="true" -e sentinel.dashboard.auth.username=admin -e sentinel.dashboard.auth.password=admin123 -e server.servlet.session.timeout=7200 --entrypoint "/docker/sentinel/docker-sentinel.sh" -d bladex/sentinel-dashboard:1.7.1
# docker-compose方式(一样, 采用了覆盖操作, environment就没必要了)
# Compose 版本 Version 2支持更多的指令。Version 1将来会被弃用。
version: "3"
# 定义服务
services:
# 为project定义服务
sentinel:
image: bladex/sentinel-dashboard:1.7.1
ports:
- 8858:8898
environment:
# 是否开启登录鉴权,仅用于日常测试,生产上不建议关闭, 默认true
auth.enabled: "true"
# 登录控制台的用户名,默认为 sentinel
sentinel.dashboard.auth.username: admin
# 登录控制台的密码,默认为 sentinel
sentinel.dashboard.auth.password: admin123
# 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
server.servlet.session.timeout: 7200
# 挂载
volumes:
- "E://Docker/sentinel/sh/:/docker/sentinel/"
# 覆盖默认入口点。
entrypoint: /docker/sentinel/docker-sentinel.sh
restart: always
container_name: sentinel
privileged: true
看下最后效果:
最后: 如果有需要, 可以写一篇如何打包sentinel镜像的文章(虽然网上一大把, 哈哈哈), 评论可留言哦
补了一遍文章说明docker entrypoint, docker覆盖镜像默认命令之docker entrypoint: https://blog.csdn.net/qq_38637558/article/details/120783759