diff --git a/novalon-manage-api/manage-gateway/Dockerfile b/novalon-manage-api/manage-gateway/Dockerfile new file mode 100644 index 0000000..d285685 --- /dev/null +++ b/novalon-manage-api/manage-gateway/Dockerfile @@ -0,0 +1,9 @@ +FROM openjdk:21-jdk-slim + +WORKDIR /app + +COPY manage-gateway/target/manage-gateway-1.0.0.jar app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/novalon-manage-api/manage-gateway/pom.xml b/novalon-manage-api/manage-gateway/pom.xml new file mode 100644 index 0000000..169ea14 --- /dev/null +++ b/novalon-manage-api/manage-gateway/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + + cn.novalon.manage + novalon-manage-api + 1.0.0 + + + manage-gateway + jar + + Manage Gateway + Gateway module for Novalon Manage API + + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-gateway + 4.1.0 + + + io.micrometer + micrometer-registry-prometheus + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + cn.novalon.manage.gateway.GatewayApplication + + + + + diff --git a/novalon-manage-api/manage-gateway/src/main/java/cn/novalon/manage/gateway/GatewayApplication.java b/novalon-manage-api/manage-gateway/src/main/java/cn/novalon/manage/gateway/GatewayApplication.java new file mode 100644 index 0000000..afdcd88 --- /dev/null +++ b/novalon-manage-api/manage-gateway/src/main/java/cn/novalon/manage/gateway/GatewayApplication.java @@ -0,0 +1,24 @@ +package cn.novalon.manage.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.gateway.route.RouteLocator; +import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class GatewayApplication { + + public static void main(String[] args) { + SpringApplication.run(GatewayApplication.class, args); + } + + @Bean + public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { + return builder.routes() + .route("manage-app", r -> r + .path("/api/**") + .uri("http://manage-app:8081")) + .build(); + } +} diff --git a/novalon-manage-api/manage-gateway/src/main/resources/application-dev.yml b/novalon-manage-api/manage-gateway/src/main/resources/application-dev.yml new file mode 100644 index 0000000..bbb479e --- /dev/null +++ b/novalon-manage-api/manage-gateway/src/main/resources/application-dev.yml @@ -0,0 +1,13 @@ +spring: + cloud: + gateway: + routes: + - id: manage-app + uri: http://localhost:8081 + predicates: + - Path=/api/** + +logging: + level: + org.springframework.cloud.gateway: TRACE + org.springframework.web.reactive: TRACE diff --git a/novalon-manage-api/manage-gateway/src/main/resources/application-prod.yml b/novalon-manage-api/manage-gateway/src/main/resources/application-prod.yml new file mode 100644 index 0000000..31f06a8 --- /dev/null +++ b/novalon-manage-api/manage-gateway/src/main/resources/application-prod.yml @@ -0,0 +1,13 @@ +spring: + cloud: + gateway: + routes: + - id: manage-app + uri: http://manage-app:8081 + predicates: + - Path=/api/** + +logging: + level: + cn.novalon.manage: INFO + org.springframework.cloud.gateway: INFO diff --git a/novalon-manage-api/manage-gateway/src/main/resources/application.yml b/novalon-manage-api/manage-gateway/src/main/resources/application.yml new file mode 100644 index 0000000..43a1fd8 --- /dev/null +++ b/novalon-manage-api/manage-gateway/src/main/resources/application.yml @@ -0,0 +1,42 @@ +server: + port: 8080 + +spring: + application: + name: manage-gateway + cloud: + gateway: + routes: + - id: manage-app + uri: http://manage-app:8081 + predicates: + - Path=/api/** + default-filters: + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST + backoff: + firstBackoff: 10ms + maxBackoff: 50ms + factor: 2 + basedOnPreviousValue: false + +management: + endpoints: + web: + exposure: + include: health,info,metrics + base-path: /actuator + endpoint: + health: + show-details: always + metrics: + tags: + application: ${spring.application.name} + +logging: + level: + cn.novalon.manage: DEBUG + org.springframework.cloud.gateway: DEBUG diff --git a/novalon-manage-api/pom.xml b/novalon-manage-api/pom.xml index b721d7c..9e5c85e 100644 --- a/novalon-manage-api/pom.xml +++ b/novalon-manage-api/pom.xml @@ -30,6 +30,7 @@ manage-sys + manage-gateway @@ -126,6 +127,11 @@ springdoc-openapi-starter-webflux-ui 2.8.13 + + io.micrometer + micrometer-registry-prometheus + 1.13.4 + org.jacoco jacoco-maven-plugin