Docker环境下使用SpringBootAdmin2.x教程

Spring Boot Admin 2.x是一个用于监测管理微服务应用的程序,通过Eureka注册中心发现服务,然后获取服务的运行状态、日志信息、并提供一套UI界面供系统运维人员检查,同时结合Spring Security进行登录权限认证

首先上完整的Github项目代码: liumapp/spring-boot-admin-in-docker

然后是完整的Wiki文档: 使用文档

所需依赖

  • spring boot 2.0.2
  • spring cloud Finchley.RELEASE
  • codecentric的spring-boot-admin 2.0.2
  • docker及docker-compose
  • maven

快速启动
更新admin-server和admin-client的application.yml配置文件

spring:
profiles:
active: docker
使用以下命令安装docker镜像

./build-image.sh
使用以下命令启动docker容器

docker-compose up -d
等待几十秒后,用浏览器访问 http://localhost:8766

登录用户名是 : admin

登录密码是 : adminadmin

你可以在admin-server的application.yml中更改账号密码

使用以下命令停止容器:

docker-compose down
使用以下命令删除docker镜像:

./rm-image.sh
日志管理
首先请clone项目到本地

如果您只希望了解跟日志管理相关的内容,那么请使用git命令切换到v1.2.0的tag

git checkout v1.2.0
在这个版本下,我们基于v1.0.0的版本,对admin-client进行了一些配置上的改动:

logging:
file: /usr/local/tomcat/project/spring-boot-admin-in-docker/log/admin-client.log
pattern:
file: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
management:
endpoints:
web:
exposure:
include: "*"
上面的改动中,我们通过management开放了所有的actuator节点信息,因为在springboot2.x系列下,默认只开放了三个,如果您希望在admin-server中查询到详细信息,您需要全部开启他们

然后logging.file指向日志文件的存放地址,请确保该目录具有可写权限

之后再依次运行admin-eureka、admin-client跟admin-server

访问浏览器的 http://localhost:8766/ ,在点击admin-client进入详情页,我们可以发现所有的配置信息包括日志信息将会罗列出来

配置Spring Security
如果您只希望了解跟Spring Security相关的内容首先请将项目切换到v1.3.0版本

git checkout v1.3.0
在之前的版本中,我们并没有引入spring security

这意味着admin-server管理控制台随便是谁都可以登录,这在本地开放环境下是没有什么影响的

但是如果发布到线上呢?

所以接下来要实现的功能,就是给admin-server添加一个登录登出的界面跟按钮

首先我们要对admin-server引入spring security

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
随后进行配置:

spring:
security:
user:
name: "admin"
password: "adminadmin"

eureka:
metadata-map:
user.name: "admin"
user.password: "adminadmin"
user.name与user.password便是登录的账号与密码

接下来修改启动类的代码:

@Configurationbr/>@EnableAutoConfiguration
@EnableDiscoveryClientbr/>@EnableAdminServer
public class AdminServerMain {

public static void main(String[] args) {
    SpringApplication.run(AdminServerMain.class, args);
}

@Configuration
public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**",
                        adminContextPath + "/logout"
                );
        // @formatter:on
    }

}

}
启动类代码主要是参考spring boot admin官方手册上的

但是他们的官方手册有一个bug:

当你完全按照官方手册上来的做,你会发现点击“log out”按钮的时候,会报403异常

我附上的代码把这个bug解决掉了

接下来配置admin-client端,只需要在其注册到eureka的时候,附上admin-server配置的账号密码即可:

eureka:
instance:
metadata-map:
user.name: "admin"
user.password: "adminadmin"
Docker环境下运行
接下来我们利用docker-compose将admin-client、admin-server以及admin-eureka部署到docker环境下面运行

如果您只希望了解跟Docker环境下运行的内容,请利用git命令,将项目代码切换到v2.1.0版本

git checkout v2.1.0
版本切换后,项目目录下面会多出三个文件:build-image.sh、rm-image.sh和docker-compose.yml

build-image.sh

脚本文件,用于安装三个微服务(admin-client、admin-server和admin-eureka)的docker镜像

rm-image.sh

脚本文件,用于删除三个微服务的docker镜像

ps:要删除镜像,必须在镜像生成的容器处于stop状态下才可以执行

docker-compose.yml

在执行完build-image.sh之后,通过docker-compose编排工具,启动容器的配置文件

具体启动命令为:

docker-compose up -d
停止命令为:

docker-compose down
利用docker-compose up -d命令启动成功后,我们可以访问浏览器的admin-server界面

您也可以通过Docker的容器工具:kitmatic来查看容器的运行状态

Author:liumapp

Home-page:http://www.liumapp.com

Email:[email protected]

原文地址:http://blog.51cto.com/13954634/2175292

时间: 2024-11-03 23:44:25

Docker环境下使用SpringBootAdmin2.x教程的相关文章

Circos在windows环境下运行的详细教程

#################################################################################### 一.下载安装circos及perl ##################################################################################### 1. 安装Perl运行circos需要Perl来编译其各种code,unix环境默认安装Perl的,而对于windows用

衡阳高防服务器租用Linux环境下架设DNS服务器教程

衡阳高防服务器租用Linux环境下架设DNS服务器教程 DNS是域名系统Domain Name System的缩写,是一种组织域层次结构的计算机和网络服务命名系统.当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的IP地址信息.本文就带领大家在Linux环境下建立一个DNS服务器. 一.相关知识概述 DNS(Domain Name System)即域名服务系统,作用是完成域名与IP地址的互换.网络上的每一台主机都有一个域名,域名给出有关主机的IP地址.MAIL路由信息

Docker环境下自动更新Let’s Encrypt SSL证书

说明:以下脚本在Ubuntu 18.04运行通过,大部分脚本执行需要管理员权限. 1. 准备docker环境 # 安装必备工具包 apt-get -y install apt-transport-https ca-certificates curl software-properties-common # 添加docker阿里云源,相对官方源速度更快 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo ap

Linux常用开发环境软件-RabbitMQ安装(docker环境下)

linux下docker环境安装RabbitMQ版本 1.从docker官网仓库下载安装RabbitMQ镜像 docker pull rabbitmq:management 注意:如果docker pull rabbitmq 后面不带management,启动rabbitmq后是无法打开管理界面的,所以我们要下载带management插件的rabbitmq. 2.启动RabbitMQ docker镜像 docker run -d --hostname my-rabbit -p 5672:5672

记用vs调式docker环境下web程序的一处坑

若选择web项目支持https,此时launchSettings.json文件为: "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:54372", "sslPo

Docker环境下编译android源码|编译可运行xposed

前言 因为我的电脑是Ubuntu18的版本,成功编译xposed刷入手机之后无法启动,检查了所有的环境,没有问题,发现可能是Ubuntu系统的兼容库的问题,但是我不可能重新安装系统吧,毕竟有点蠢,所以最好的方式就是在docker的Ubuntu容器中编译,统一环境问题,也可以隔离环境平时 工作开发环境,下面开始操作 安装配置docker docker加速,采用对国人友好的镜像地址 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,执行以下命令: 您可以配置 D

Docker环境下的前后端分离项目部署与运维(一)项目简介及环境要求

项目简介 本教程将从零开始部署一个前后端分离的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能.高负载.高可用的部署方案.包括了MySQL集群.Redis集群.负载均衡.双机热备等等. 部署图 所用到的主流技术 Docker容器.前后端集群.MySQL集群.Redis集群.Haproxy负载均衡.Nginx负载均衡.Keepalived实现双机热备 前后端分离项目部署图 前后端分离项目开源框架介绍 本次教程所采用的前后端分离的项目开源框架是人人网的renren

windows环境下wampserver的配置教程

对于初做PHP网站的朋友来说,第一步肯定是希望在自己电脑是搭建PHP环境,省去空间和上传的麻烦!但搭建环境也不是件容易的事情,特别是对于新手同学来说!因此在这里跟大家介绍我作为一名新手在使用的方便好用的PHP服务器架设软件,那就是wampserver,这款软件在安装的过程中就已经把Apache.MySQL.PHP继承好了,而且也做好了相应的配置,除此之外,还加上了SQLitemanager和Phpmyadmin,省去了很多复杂的配置过程,让我们能把更多的时间放在程序开发上.更值得高兴地是这款软件

RabbitMQ:Docker环境下搭建rabbitmq集群

RabbitMQ作为专业级消息队列:如何在微服务框架下搭建 使用组件 文档: https://github.com/bijukunjummen/docker-rabbitmq-cluster 下载镜像: git clone https://github.com/bijukunjummen/docker-rabbitmq-cluster.git cd docker-rabbitmq-cluster/clusterdocker-compose up -d 等待下载完成: 会自动构建3个rabbitM