Как получить доступ к Oracle AWS RDS через JDBC из контейнера Docker с загрузочным приложением Spring, размещенным на Tomcat - PullRequest
0 голосов
/ 01 ноября 2018

В настоящее время я запускаю файл WAR в контейнере Apache Tomcat Docker. Файл war - это приложение Spring Boot. Application.properties содержат соединение, использующее соединение oracle jdbc6 с базой данных. Файл jar включен в сборку Maven. Я продолжаю получать 500. Я могу запустить тот же файл WAR на моем локальном компьютере, и все соединения работают нормально. Вот почему я предполагаю, что это из-за открытых портов в контейнере Docker.

sudo docker run -d -p 8080:8080 -p 1521:1521  --restart unless-stopped fd13ad9f3e16

Я открыл порты на 1521, но все еще не могу получить доступ к базе данных.

Есть ли что-то еще, что мне нужно запустить в моем док-контейнере, чтобы получить доступ к соединению Oracle JDBC снаружи?

1 Ответ

0 голосов
/ 02 ноября 2018

Итак, вот шаги, которые я предпринял в AWS, чтобы убедиться, что это работает на моих экземплярах Tomcat Docker для соединения JDBC. Вам не нужно запускать -p 1521: 1521, поскольку контейнер докера является только экземпляром Tomcat и не содержит Oracle. Убедитесь, что вы установили файл application.properties (ниже приведен пример)

spring.datasource.url=jdbc:oracle:thin:@//< DNS name for RDS>:1521/<SID>
spring.datasource.username=<oracle db username>
spring.datasource.password=< oracle db password for username>
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
#hibernate config
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
#spring.data.rest.base-path=/api
spring.data.rest.default-page-size: 20

Затем убедитесь, что ваша группа безопасности RDS настроена так, чтобы разрешить конкретный IP-адрес ваших экземпляров EC2. Я бы не рекомендовал открываться всем.

Далее обязательно откройте группу безопасности для экземпляра EC2 для 1521.

Так и должно быть. Проблема, с которой я столкнулся, заключалась в том, что группа безопасности RDS не была специально настроена для моего экземпляра EC2.

Вы также можете установить SQLplus, используя RPM-пакеты от Oracle, чтобы также проверить ваше соединение. Пример команды будет:

sqlplus '<username>/<password>@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<aws DNS name>)(Port=1521))(CONNECT_DATA=(SID=<name of SID>)))'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...