spring 无法使用docker compose连接到Sping Boot 应用程序中的Oracle数据库

aiqt4smr  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(131)

我有一个Sping Boot 应用程序,我想与Oracle数据库连接,使用Oracle Database Free Container / Docker images.映像进行容器化。
此外,我使用docker compose来配置数据库部署,并使用 Sping Boot Docker Compose 在应用程序启动时运行部署。
但是,由于以下错误,我的应用程序无法连接到数据库:

  1. java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection (CONNECTION_ID=V0w3NC+xSxaZYliy+XojdA==)
  2. at oracle.jdbc.driver.T4CConnection.handleLogonNetException(T4CConnection.java:892) ~[ojdbc8-21.9.0.0.jar:21.9.0.0.0]
  3. at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:697) ~[ojdbc8-21.9.0.0.jar:21.9.0.0.0]

字符串
Oracle容器看起来不错:

  1. Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_FREE)))
  2. 2023-12-18T19:40:23.357410157Z Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  3. 2023-12-18T19:40:23.357437163Z
  4. 2023-12-18T19:40:23.357462169Z Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_FREE)))
  5. 2023-12-18T19:40:23.377109429Z STATUS of the LISTENER
  6. 2023-12-18T19:40:23.377387489Z ------------------------
  7. 2023-12-18T19:40:23.377432499Z Alias LISTENER
  8. 2023-12-18T19:40:23.377468507Z Version TNSLSNR for Linux: Version 23.0.0.0.0 - Production
  9. 2023-12-18T19:40:23.377499514Z Start Date 18-DEC-2023 19:40:23
  10. 2023-12-18T19:40:23.377528520Z Uptime 0 days 0 hr. 0 min. 0 sec
  11. 2023-12-18T19:40:23.377556526Z Trace Level off
  12. 2023-12-18T19:40:23.381577398Z Security ON: Local OS Authentication
  13. 2023-12-18T19:40:23.381807448Z SNMP OFF
  14. 2023-12-18T19:40:23.381845456Z Default Service FREE
  15. 2023-12-18T19:40:23.381875462Z Listener Parameter File /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
  16. 2023-12-18T19:40:23.381903469Z Listener Log File /opt/oracle/diag/tnslsnr/f8cd793dc1d4/listener/alert/log.xml
  17. 2023-12-18T19:40:23.381930474Z Listening Endpoints Summary...
  18. 2023-12-18T19:40:23.383162742Z (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_FREE)))
  19. 2023-12-18T19:40:23.383223755Z (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  20. 2023-12-18T19:40:23.383255762Z The listener supports no services
  21. 2023-12-18T19:40:23.385380222Z The command completed successfully
  22. 2023-12-18T19:40:33.630788572Z ORACLE instance started.


此外,Docker配置和Docker合成设置与gvenzl/oracle-free:latest镜像设置instructions内联
Spring应用程序配置:

  1. spring:
  2. liquibase:
  3. enabled: false
  4. datasource:
  5. url: jdbc:oracle:thin:@localhost:1521/FREEPDB1
  6. username: PERSONS_DB
  7. password: Lider0ne


Docker compose设置

  1. services:
  2. oracle:
  3. image: 'gvenzl/oracle-free:latest'
  4. environment:
  5. - 'ORACLE_RANDOM_PASSWORD=true'
  6. - 'APP_USER=PERSONS_DB'
  7. - 'APP_USER_PASSWORD=Lider0ne'
  8. ports:
  9. - 1521:1521


最后,我得到一个类似的错误连接到数据库使用IntelliJ数据库工具窗口。

  1. IO Error: The Network Adapter could not establish the connection (CONNECTION_ID=gZO5dOjYRGKjaOL469MGIw==).


的数据

注意:我在Apple M芯片上运行Docker

根据Oracle Database Free文档,这应该没有问题,我按照它的指示使用colima--arch -x86_64选项运行容器。容器成功启动,如上所述。
你有没有遇到过同样的问题?如果有,我该如何解决

webghufk

webghufk1#

Docker compose为您创建了一个桥接网络docker network ls,其中服务发现正在发生。
localhost是Spring App的本地主机(并且您没有在Spring App容器中运行Oracle数据库)

  1. datasource:
  2. url: jdbc:oracle:thin:@localhost:1521/FREEPDB1

字符串
因此,您可以通过服务名称'oracle'访问数据库(:1521是默认值,可以省略)

  1. datasource:
  2. url: jdbc:oracle:thin:@oracle/FREEPDB1


祝你好运!

相关问题