簡體   English   中英

Dockerized Spring Boot 應用程序無法連接到數據庫容器

[英]Dockerized Spring Boot app can't connect to database container

我有一個帶有 gradle 和 Hibernate 的基本 Spring Boot 應用程序,它調用 Oracle 數據庫,該數據庫位於 docker 容器中。

我使用插件“com.google.cloud.tools.jib”並使用以下命令創建了 Spring Boot 應用程序的 Docker 映像:

./gradlew jibDockerBuild --image=app1

我已經創建了一個用戶定義的網絡(我們稱之為my_network )並且我已經將數據庫容器附加到上述網絡。

我有一個 docker 文件,即使我將圖像指定為服務並在運行時使用my_network我在 CMD 中點擊了“ docker -compose up”命令,但我收到以下異常:

java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection

docker-compose 文件如下:

version: '3.7'

networks:
    my_network:
        external: 
            name: my_network

services:
   app1:
   image: "app1"
   ports:
     - "9090:9090"
   environment: 
     SPRING_DATASOURCE_URL: "jdbc:oracle:thin:@localhost:32769/ORCLPDB1.localdomain"
     SPRING_DATASOURCE_USERNAME: username
     SPRING_DATASOURCE_PASSWORD: password 
   networks:
     - my_network

嘗試了解決方案,但沒有結果:

  1. 將數據庫指定為服務,因此基本上讓它在我第一次點擊“docker-compose up”時創建,並且在服務 app1 中指定了標簽 depends_on 但創建的數據庫容器將在 app1 啟動后很長時間處於健康狀態:啟動狀態墜毀
  2. 讓網絡從 docker-compose 文件內部創建,但行為與所問問題相同
  3. 在數據庫 url 中用host.docker.internal替換了 localhost 但它說是一個未知的主機

在 Docker-compose 文件中。 創建 Oracle 數據庫容器,然后創建 API 容器,如下所示

version: '3.7'
services:
  oracle-database:
      image: Your oracleImage
      environment:
         //define your oracle db settings..eg default password,users etc
      volumes:
            - /data/oracle
      ports:
        - 127.0.0.1: 32769:32769/tcp

  api1:
    image: api1
    ports:
      - 127.0.0.1:9090:9090/tcp
    depends_on:
     - oracle-database
    environment:
       - DATABASE_HOST=oracle-database
       - DATABASE_USER= username
       - DATABASE_PASSWORD=password
       - DATABASE_NAME= NameOfYourDatabase
       - DATABASE_PORT= 32769

暫無
暫無

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

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