SpringCloud环境搭建---Springboot-Admin
springboot- AdminServer
搭建过程
-
- 修改pom.xml
<dependencies>
<!--Spring admin-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<!--配置中心客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--添加spring-boot-starter-security后,如果没有一下依赖,会报错 :-->
<!--Error:(17, 8) java: 无法访问javax.servlet.Filter 找不到javax.servlet.Filter的类文件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 2.新建bootstrap.yml
spring:
application:
name: doraemon-monitor
cloud:
config:
enabled: true
discovery:
enabled: true
service-id: doraemon-configServer
security:
user:
name: moyang
password: moyang1
profiles:
active: secure
server:
port: 8764
eureka:
client:
service-url:
defaultZone: http://${eureka_service_url:eureka-peer1:8761}/eureka/
registry-fetch-interval-seconds: 10
instance:
metadata-map:
user.name: moyang
user.password: moyang1
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
- 3.修改application.yml
turbine:
aggregator:
cluster-config: default # 指定聚合哪些集群,多个使用","分割,默认为 default
app-config: doraemon-zuul,doraemon-example-service,doraemon-configServer
clusterNameExpression: new String("dor-")
spring:
boot:
admin:
monitor:
period: 1000ms # 监控刷新时间
discovery:
enabled: true # 开启自动发现服务
- 4.修改启动类
@SpringBootApplication
@EnableAdminServer
@EnableEurekaClient
public class DorMonitorApplication {
public static void main(String[] args) {
SpringApplication.run(DorMonitorApplication.class, args);
}
}
启动后,查看eureka页面:
访问:127.0.0.1:8764,可以看到
点击对应的实例可以看到详细信息:
添加安全控制
- 1.引入security依赖:
<!--安全验证-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- 2.新建一个安全控制的配置类:
package com.moyang.doraemon.monitor.configurations;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
/**
* doraemon -- 监控添加权限验证
*
* @author 墨阳
* @date 2018-10-21
*/
@Configuration
@Profile("secure") // secure:安全
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public WebSecurityConfigurer(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
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().disable();
}
}
3.新建一个允许所有的配置类:
package com.moyang.doraemon.monitor.configurations;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* doraemon -- 允许所有的人访问。
*
* @author 墨阳
* @date 2018-10-21
*/
@Configuration
@Profile("insecure") //insecure:不安全。
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll()//
.and().csrf().disable();
}
}
重新启动,这时候,重新访问Admin页面,就需要填写用于用户名和密码了。
docker集成
修改pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--指定镜像的名称-->
<imageName>${project.artifactId}:${project.version}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<forceTags>true</forceTags>
<!--那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入-->
<resources>
<resource>
<targetPath>/</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件,${project.build.finalName}.jar指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
新建Dockerfile(src/main/docker):
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD dor-monitor-0.0.1-SNAPSHOT.jar app.jar
RUN chmod 755 /app.jar
EXPOSE 8764
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
使用mvn clean package docker:build
打包
最后
如果你觉得写的还不错,就关注下公众号呗,关注后,有点小礼物回赠给你。
你可以获得5000+电子书,java,springCloud,adroid,python等各种视频教程,IT类经典书籍,各种软件的安装及破解教程。
希望一块学习,一块进步!