Docker環境下使用SpringBootAdmin2.x教程
首先上完整的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"
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便是登錄的賬號與密碼
接下來修改啟動類的代碼:
@Configuration@EnableAutoConfiguration
br/>@EnableAutoConfiguration
br/>@EnableAdminServer
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]
Docker環境下使用SpringBootAdmin2.x教程