【问题标题】:Dockerized Spring boot app connect to database docker imageDockerized Spring boot 应用程序连接到数据库 docker 映像
【发布时间】:2020-05-17 02:53:12
【问题描述】:

我有一个带有 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

更多信息:

  1. 我的 Oracle 数据库是一个 docker 容器,名称为:“ORA12201_1”,端口为 3769
  2. 在 application.properties 中指定的数据库属性是正确的,因为我准备从 IntelliJ 启动应用程序

【问题讨论】:

    标签: spring-boot docker docker-compose


    【解决方案1】:

    您可以毫无问题地从 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
    

    【讨论】:

    • 除了创建用户定义的网络之外,还有其他推荐的方法吗?我认为可以将数据库容器指定为卷或服务
    • 您好,Docker 卷基本上是您可以共享的存储(文件夹),但您的应用需要与 Oracle 进行“对话”。在 Kubernetes 中不同,您可以将服务附加到您的应用程序,但这是一种不同的技术
    • 但是我们也可以部署这个自定义网络吗?或者使用这个 Dockerfile 在 Linux 机器上部署这个应用程序的过程是如何工作的?
    • 无论你有 Docker,它的工作原理都是一样的,如果你指的是类似生产的环境,你可能想使用 docker-compose(更简单的配置)或像 Docker Swarm 或 Kubernetes 这样的额外层跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2017-12-29
    • 2019-11-06
    • 2019-01-02
    • 2019-12-24
    • 2021-01-29
    • 2019-10-19
    相关资源
    最近更新 更多