gpt4 book ai didi

spring-boot - Dockerized Spring Boot应用程序连接到数据库Docker镜像

转载 作者:行者123 更新时间:2023-12-02 19:52:02 25 4
gpt4 key购买 nike

我有一个带有gradle的基本spring boot应用程序,该应用程序可以调用Oracle数据库,并且数据库属性在application.properties文件中指定。

我使用插件“com.google.cloud.tools.jib”并使用以下命令创建了Spring Boot应用程序的Docker镜像:

./gradlew jibDockerBuild --image=app1

我有一个docker-compose文件,其中我将图像指定为服务,并且我希望在运行命令时启动应用程序:“docker-compose up”

docker-compose文件如下:
version: '3'
services:
app1:
image: "app1"
ports:
- "8731:8731"

但是,当我在CMD中运行“docker-compose up”命令时,收到以下异常:
 java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection

更多信息:
  • 我的Oracle数据库是一个名为:“ORA12201_1”和端口3769的docker容器
  • 在application.properties内部,指定的数据库属性是正确的,因为我正在从IntelliJ
  • 中启动应用程序

    最佳答案

    您可以毫无问题地从IntelliJ连接,因为容器将端口(3769)暴露给主机(您的PC),但是现在您尝试从一个Docker容器连接到另一个。
    容器不共享网络(隔离),因此您需要连接它们。

    推荐的方法之一是用户定义的网络

    首先创建一个网络

    docker network create --driver bridge my_network

    运行应用程序
    docker run -p 5432:5432 --network my_network -d --name=postgres postgres
    docker run -p 5050:80 --network my_network -d --name=pgadmin dpage/pgadmin4

    您可以通过以下方式验证它们是否在同一网络上有效运行:
    docker network inspect my_network

    Spring Boot配置

    您现在可以使用 host.docker.internal作为主机名从一个连接到另一个,例如在您的Spring Boot application.properties中
    spring.datasource.url=jdbc:postgresql://host.docker.internal:5432/postgres

    关于spring-boot - Dockerized Spring Boot应用程序连接到数据库Docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60003840/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com