Я создал небольшое приложение, использующее Hibernate и Spring boot. У меня есть база данных MySQL на внешнем сервере с некоторым IP-адресом 123.123.12.123.
Когда я запускаю это приложение локально (в Windows) через java -jar myapp.jar, возникает проблема нет, приложение запускается и все нормально. проблема появляется, когда я пытаюсь запустить это приложение в Docker. Приложение даже не запускается. Есть HibernateException:
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
Я уверен, что это потому, что я не могу подключиться к базе данных. (У меня такая же проблема, когда я пытался подключиться локально, а база данных была недоступна). Итак, что мне делать, чтобы это исправить? Это мой application.properties:
spring.datasource.url=jdbc:mysql://123.123.12.123:3306/szoplist_db
spring.datasource.username=root
spring.datasource.password=my_passwd
Обновлено:
Я запускаю образ докера через docker run -p 8080:8080 <IMAGE_ID>.
Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Другие приложения (без db) с тем же файлом Dockerfile и командой запуска работают.
Да сэр! Сделанный.
У меня есть Интернет в моем наборе инструментов Docker - я могу пинговать свой сервер 123.123.12.123 (как [email protected]).
Что вы имеете в виду под as [email protected]? docker run -it openjdk:8-jdk-alpine ping 123.123.12.123 работает?
ping 123.123.12.123 работает. 123.123.12.123 это всего лишь IP моего внешнего сервера MySQL. Докер, который я использую, находится на моем компьютере локально.
И да, docker run -it openjdk:8-jdk-alpine ping 123.123.12.123 работает.
Возможно, проблема в настройке гибернации. Убедитесь, что в докере выбран правильный профиль пружины (правильный application.properties). Есть ли в исключении разделы caused by? Также может помочь публикация полной трассировки стека.




Укажите свою команду
docker run. Docker-файл вашего приложения также может помочь. Вы пробовали пинговать ip из контейнера? Также можно попробовать одно из решений от stackoverflow.com/q/20430371/2065796