Я запускаю простое приложение с пружинной загрузкой внутри док-контейнера. Вот мои характеристики:
- пружинная загрузка 2.1.3. ВЫПУСК
- Java 11 с Windows 10
- Использование докера: FROM debian: эластичный, как упаковщик - ENV JDK_VERSION = "11.0.1"
Простые приложения с весенней загрузкой отлично работают с вышеуказанной конфигурацией
Когда я добавил Mongodb (Spring data mongo) и запустил приложения Spring Boor, он хорошо работает на моем компьютере с Windows, но когда я запускаю в Docker-контейнере, он выдает ошибку следующим образом:
==============================================
o.s.b.web.embedded.tomcat.TomcatStarter: Ошибка запуска контекста Tomcat. Исключение: org.springframework.beans.factory.BeanCreationException. Сообщение: Ошибка создания бина с именем 'servletEndpointRegistrar', определенного в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / endpoint / web / ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration.class] через метод фабрики не удалось; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: метод фабрики 'servletEndpointRegistrar' вызвал исключение; вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'healthEndpoint', определенного в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthEndpointConfiguration.class]: неудовлетворенная зависимость, выраженная методом ' healthEndpoint 'параметр 1; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'healthIndicatorRegistry', определенным в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthIndicatorAutoConfiguration.class]: метод экземпляра компонента не был обработан с помощью фабрики ; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.health.HealthIndicatorRegistry]: фабричный метод 'healthIndicatorRegistry' вызвал исключение; вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthIndicatorAutoConfiguration ': выражена несоответствующая параметру зависимость 0; Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'mongoTemplate', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: выраженный метод через недоставку mongoTemplate 'параметр 0; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'mongoDbFactory', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: метод экземпляра бина с помощью фабрики не сработал ; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.data.mongodb.core.MongoDbFactorySupport]: фабричный метод 'mongoDbFactory' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'mongo', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / mongo / MongoAutoConfiguration.class]: сбой создания экземпляра бина с помощью метода фабрики; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.mongodb.MongoClient]: фабричный метод 'mongo' вызвал исключение; вложенное исключение - com.mongodb.MongoClientException: невозможно создать контекст JNDI для разрешения записей SRV. Класс com.sun.jndi.dns.DnsContextFactory недоступен в этой JRE2019-03-10 06: 18: 58.201 ОШИБКА 1 --- [main] o.s.boot.SpringApplication: сбой запуска приложения
org.springframework.context.ApplicationContextException: невозможно запустить веб-сервер; вложенное исключение org.springframework.boot.web.server.WebServerException: невозможно запустить встроенный Tomcat
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:157) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:543) ~ [spring-context-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:142) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:775) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:397) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:316) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1260) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1248) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в com.eschoolo.EschooloCoreServiceApplication.main (EschooloCoreServiceApplication.java:24) ~ [классы! /: 0.0.1-SNAPSHOT]
в java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: na]
в java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) ~ [na: na]
в java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) ~ [na: na]
в java.base / java.lang.reflect.Method.invoke (неизвестный источник) ~ [na: na]
в org.springframework.boot.loader.MainMethodRunner.run (MainMethodRunner.java:48) ~ [eschoolo.jar: 0.0.1-SNAPSHOT]
в org.springframework.boot.loader.Launcher.launch (Launcher.java:87) ~ [eschoolo.jar: 0.0.1-SNAPSHOT]
в org.springframework.boot.loader.Launcher.launch (Launcher.java:50) ~ [eschoolo.jar: 0.0.1-SNAPSHOT]
в org.springframework.boot.loader.JarLauncher.main (JarLauncher.java:51) ~ [eschoolo.jar: 0.0.1-SNAPSHOT]
Вызвано: org.springframework.boot.web.server.WebServerException: Невозможно запустить встроенный Tomcat
в org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize (TomcatWebServer.java:125) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.web.embedded.tomcat.TomcatWebServer. (TomcatWebServer.java:86) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer (TomcatServletWebServerFactory.java:415) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELE
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer (TomcatServletWebServerFactory.java:174) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer (ServletWebServerApplicationContext.java:181) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:154) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
... 16 общих кадров опущеноВызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'servletEndpointRegistrar', определенного в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / endpoint / web / ServletEndpointManagementContextConfiguration $ point_set_set_name_set_set_set_set_settionMision_point_set_set_set_set_set_set_set_set_set_set_set_t_setчерез фабричный метод не удалось;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: метод фабрики 'servletEndpointRegistrar' вызвал исключение;вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'healthEndpoint', определенного в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthEndpointConfiguration.class]: неудовлетворенная зависимость, выраженная методом 'healthEndpoint 'параметр 1;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'healthIndicatorRegistry', определенным в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthIndicatorAutoConfiguration.class]: метод экземпляра компонента не был обработан с помощью фабрики;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.health.HealthIndicatorRegistry]: фабричный метод 'healthIndicatorRegistry' вызвал исключение;вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthIndicatorAutoConfiguration ': выражена несоответствующая параметру зависимость 0;Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'mongoTemplate', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: выраженный метод через недоставкуmongoTemplate 'параметр 0;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'mongoDbFactory', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: метод экземпляра бина с помощью фабрики не сработал;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.data.mongodb.core.MongoDbFactorySupport]: фабричный метод 'mongoDbFactory' вызвал исключение;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'mongo', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / mongo / MongoAutoConfiguration.class]: сбой создания экземпляра бина с помощью метода фабрики;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.mongodb.MongoClient]: фабричный метод 'mongo' вызвал исключение;вложенное исключение com.mongodb.MongoClientException: невозможно создать контекст JNDI для разрешения записей SRV.Класс com.sun.jndi.dns.DnsContextFactory недоступен в этой JRE по адресу org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver.java:627) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE] в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:607) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1305) ~ [spring-beans-5.1.5jRELE: 5.1..springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1144) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:515) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:320) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:318) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:204) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType (ServletContextInitializerBeans.java:235) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType (ServletContextInitializerBeans.java:226) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans (ServletContextInitializerBeans.java:101) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.EL
в org.springframework.boot.web.servlet.ServletContextInitializerBeans. (ServletContextInitializerBeans.java:88) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans (ServletWebServerApplicationContext.java:261) ~ [spring-boot-2.1.3.RELEASE.jar!:
в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize (ServletWebServerApplicationContext.java:234) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup (TomcatStarter.java:54) ~ [spring-boot-2.1.3.RELEASE.jar! /: 2.1.3.RELEASE]
в
Причина: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'mongoDbFactory', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class] через экземпляр компонента заводской метод не удался; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.data.mongodb.core.MongoDbFactorySupport]: фабричный метод 'mongoDbFactory' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'mongo', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / mongo / MongoAutoConfiguration.class]: сбой создания экземпляра бина с помощью метода фабрики; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.mongodb.MongoClient]: фабричный метод 'mongo' вызвал исключение; вложенное исключение - com.mongodb.MongoClientException: невозможно создать контекст JNDI для разрешения записей SRV. Класс com.sun.jndi.dns.DnsContextFactory недоступен в этой JRE
в org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver.java:627) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:607) ~ [spring-beans-5.1.5.RELEASE.jar! /: 5.1.5.RELEASE]в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1305) ~
1014 * ===============================================================
Подозреваю, что Spring Boot не поддерживает Java 11полностью или у меня отсутствует какой-либо Java-модуль, который мне нужно добавить в мой Dockerfile.
На данный момент у меня есть следующие java-модули, добавленные в мой dockerfile:
- add-modules \ java.base, java.sql, java.naming, java.desktop, java.management, java.security.jgss, java.instrument
Любые предложения будут полезны.