我试图在Docker容器中运行一个Spring应用程序,但我得到了以下问题。但是,如果我通过STS运行应用程序,我就不会遇到任何问题。
org.springframework.beans.factory.BeanCreationException::在上下文初始化过程中遇到的异常-可以区分刷新尝试:org.springframework.beans.factory.BeanCreationException:错误创建名为“requestMappingHandlerAdapter”的类路径资源org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class: bean实例化通过工厂方法失败;嵌套异常是org.springframework.beans.BeanInstantiationException:未能实例化org.springframework.web.servlet.mvc.method.annotation.Re questMappingHandlerAdapter:工厂方法'requestMappingHandlerAdapter‘抛出的异常;嵌套异常是org/springframework/web/servlet/config/annotation/DelegatingWe tionException:错误创建类路径资源中定义的名为“mvcValidator”的Bean,类路径资源org.springframework.beans.factory.BeanCrea bMvcConfiguration.class: bean通过工厂方法实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:失败的to实例化org.springframework.validation.Validator: mvcValidator方法'mvcValidator‘抛出的异常;嵌套异常是javax.validation.ValidationEx ception: HV000183:无法初始化'javax.el.ExpressionFactory’。检查类路径上是否有EL依赖项,或者使用ParameterMessageInt erpolator代替
码头文件-
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Pom.xml--
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<imageName>genaaqua/web-project</imageName>
<baseImage>java:8</baseImage>
<entryPoint>
["java", "-jar", "/${project.build.finalName}.jar"]
</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
发布于 2018-07-24 21:13:52
任何正确打包的春季引导应用程序都应该能够以:java -jar app.jar
开头。
因此,首先要确保您能够“在”对接器容器之外运行应用程序,因为在这里对接器不太相关,而应用程序只是没有正确地打包。
在“目标”/“构建”文件夹中(取决于构建工具),找到app.jar并在没有任何停靠程序的情况下运行它。
发布于 2018-07-24 22:53:28
设置了两个入口点。一个通过docker文件,另一个通过maven插件。我相信这会引起争议。
试试这个:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
您只需要根据您的停靠文件为Docker文件-> JAR_FILE设置一个参数集。
发布于 2018-07-25 03:21:14
解决了。只需将依赖项更改为
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b08</version>
</dependency>
从…
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
</dependency>
https://stackoverflow.com/questions/51511132
复制相似问题