AWS上的Spring Boot Thymelaf Docker镜像:白标签错误第404页



我将Spring Boot Thymelaf应用程序部署到AWS Kubernetes集群

在本地运行良好:

http://localhost:8097

但当我将其部署到AWS Kubernetes集群时,我看到以下错误:

白标签错误页面404

以下是我的应用程序的一些文件:

应用程序。属性:

### server port
server.port=8097

WebController.java:

@Controller
public class WebController {
@Autowired
private CustomerDAO customerDAO;
@GetMapping(path = "/")
public String index() {
return "external";
}
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.6</version>
<relativePath />
</parent>
<groupId>skyglass</groupId>
<artifactId>customer-management-keycloak</artifactId>
<version>1.0.0</version>
<name>customer-management-keycloak</name>
<description>Customer Management Application</description>
<properties>
<java.version>11</java.version> 
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>13.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> 
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
<!-- Docker Spotify Plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>skyglass/${project.name}</repository>
<tag>${project.version}</tag>
<skipDockerInfo>true</skipDockerInfo>
</configuration>
</plugin>                       
</plugins>
</build>
</project>

Dockerfile:

FROM adoptopenjdk/openjdk11:alpine-jre
VOLUME /tmp
EXPOSE 8097
ADD target/*.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

客户gmt.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: customermgmt
labels:
app: customermgmt
spec:
replicas: 1
selector:
matchLabels:
app: customermgmt
template:
metadata:
labels:
app: customermgmt
spec:
containers:
- name: customermgmt
image: skyglass/customer-management-keycloak:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 8097
hostPort: 8097

---
apiVersion: v1
kind: Service
metadata:
name: customermgmt
spec:
ports:
- protocol: TCP
name: web
port: 80
targetPort: 8097
selector:
app: customermgmt

traefik入口。yaml:

apiVersion: "networking.k8s.io/v1beta1"
kind: "Ingress"
metadata:
name: "traefik-customermgmt-ingress"
spec:
ingressClassName: "traefik-lb"
rules:
- host: "keycloak.skycomposer.net"
http:
paths:
- path: "/customermgmt"
backend:
serviceName: "customermgmt"
servicePort: 80

application.properties中的以下配置修复了该问题:

server.servlet.context-path=/customermgmt

路径名应等于入口路径

请参阅github:上的完整代码

https://github.com/skyglass-examples/customer-management-keycloak

最新更新