Spring boot 对于具有Docker数据库的Docker应用程序,要连接的主机值是多少?

Spring boot 对于具有Docker数据库的Docker应用程序,要连接的主机值是多少?,spring-boot,docker,dockerfile,Spring Boot,Docker,Dockerfile,有一个Docker数据库mySql,它的设置类似于端口3308:3306,这意味着内部Docker端口3306由本地主机端口3308托管,我可以通过简单地使用端口3308从本地机器和应用程序连接到此数据库 但如果我在Docker本身中运行应用程序,那么要连接Docker数据库,主机名和端口下面的值应该是多少 jdbc:mysql://<DB_Container_name>:port/DBName?useSSL=false jdbc:mysql://主机名:端口/DBName?use

有一个Docker数据库mySql,它的设置类似于端口3308:3306,这意味着内部Docker端口3306由本地主机端口3308托管,我可以通过简单地使用端口3308从本地机器和应用程序连接到此数据库

但如果我在Docker本身中运行应用程序,那么要连接Docker数据库,主机名和端口下面的值应该是多少

jdbc:mysql://<DB_Container_name>:port/DBName?useSSL=false

jdbc:mysql://主机名端口/DBName?usesl=false

我建议docker run命令使用这种设置

  • 创建专用网桥网络

    docker network create --driver bridge privet-net
    
  • 现在启动应用程序和DB容器,并添加以下标志

    --network private-net
    
在用户定义的网络上,容器不仅可以通过IP地址进行通信,还可以将容器名称解析为IP地址。此功能称为自动服务发现

有关Docker容器网络的更多详细信息,请阅读

  • 现在您可以使用以下URL访问数据库

    jdbc:mysql://<DB_Container_name>:port/DBName?useSSL=false
    
    jdbc:mysql://:port/DBName?usesl=false
    
这种方法可能看起来很复杂,但它是推荐的方法。使用此设置,您的数据库将位于专用网络中,其他容器也无法访问。这为您的数据库增加了额外的安全性。

我建议您通读Docker文档,即使您没有使用Compose。如果没有Compose,您可以复制它的设置,创建一个文档(尽管文档不是那么容易理解)。
jdbc:mysql://<DB_Container_name>:port/DBName?useSSL=false