如何使用Tomcat上托管的Spring引导应用程序从Docker Container通过JDBC访问Oracle AW



我目前正在Apache Tomcat Docker容器中运行一个WAR文件。war文件是一个Spring Boot应用程序。application.properties包含一个使用oracle jdbc6连接到数据库的连接。jar文件包含在Maven构建中。我继续收到500分。我可以在本地机器上运行相同的WAR文件,所有连接都可以正常工作。这就是为什么我假设它是因为码头集装箱上的开放港口。

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

我打开了1521的端口,但仍然无法访问数据库。

为了访问外部的OracleJDBC连接,我还需要在我的docker容器上运行什么吗?

因此,以下是我在AWS中采取的步骤,以确保这在JDBC连接的Tomcat Docker实例上有效。您不需要运行-p1521: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实例的安全组。

应该是这样。我遇到的问题是没有为我的EC2实例专门配置RDS安全组。

您也可以使用Oracle的RPM软件包安装SQLplus来测试您的连接。命令示例为:

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

相关内容

最新更新