簡體   English   中英

如何使用Tomcat托管的Spring Boot應用程序從Docker Container通過JDBC訪問Oracle AWS RDS

[英]How to access Oracle AWS RDS through JDBC from Docker Container with Spring boot application hosted on Tomcat

我當前在Apache Tomcat Docker容器中運行WAR文件。 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連接,我還需要在docker容器上運行其他任何東西嗎?

因此,這是我在AWS中采取的步驟,以確保該方法適用於我的Tomcat Docker實例以進行JDBC連接。 您不需要運行-p 1521:1521,因為docker容器只是一個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安全組設置為允許EC2實例的特定IP地址。 我不建議向所有人開放。

接下來,確保為1521打開EC2實例的安全組。

應該是這樣。 我遇到的RDS安全組問題沒有為我的EC2實例專門配置。

您也可以使用Oracle的RPM軟件包安裝SQLplus,以測試您的連接。 示例命令為:

sqlplus '<username>/<password>@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<aws DNS name>)(Port=1521))(CONNECT_DATA=(SID=<name of SID>)))'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM