当前位置: 首页 > 知识库问答 >
问题:

Spring Boot MySQL docker容器

欧阳正德
2023-03-14

我有两个容器,一个带有Srping应用程序,另一个带有mysql。当我在本地机器上运行Spring应用程序时,它成功地连接到docker容器中运行的MySQL db。一旦我启动Spring容器,就会出现连接错误,应用程序无法与MySQL容器通信。如何配置Spring容器以与db容器通信?我试着创建一个桥接网络,但没有成功。我相信我的问题是Spring。数据源。url=jdbc:mysql://localhost:3309/library但是当我尝试使用网络id时,jar无法构建spring。数据源。url=jdbc:mysql://lms-network/library。我一直在学习这个教程。docker图像。

共有1个答案

厍兴腾
2023-03-14

我们有几种方法可以解决这个问题。

将两个容器都放入docker compose文件中。例子:

version: "3"
services: 
  spring-boot-service:
    build:
      context: .
    ports:
      - 8080:8080
    environment:
      DB_HOST: mysql-db
      DB_NAME: library
      DB_USER: <user>
      DB_PASSWORD : <pwd>


  mysql-db:
    image: mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: <db_name>
      #... other properties

然后在申请中。属性,将连接字符串用作:spring。数据源。url=jdbc:mysql://${DB_HOST}:3306/${DB_NAME}

然后使用docker compose up将两个容器一起运行。通过这种方式,他们将通过docker compose共享网络。

当您在不同的容器中运行您的Spring启动应用程序和mysql时,您不能再从localhost引用mysql数据库,因为localhost意味着指向您的容器。由于mysql在您的主机上运行,您可以通过使用host.docker.internal而不是localhost连接字符串来引用它。

所以你的连接字符串应该是

spring.datasource.urlmysql://host.docker.internal:3309/library

 类似资料:
  • > 我正试图弄清楚Kubernetes中的网络,尤其是多集装箱吊舱的处理。在我的简单场景中,我总共有3个豆荚。其中一个有两个容器,另一个只有一个容器,它希望与多容器吊舱中的特定容器通信。我想弄清楚kubernetes如何处理此类容器之间的通信。 为此,我在一个“sidecar体系结构”中有一个简单的多容器吊舱,YAML文件如下所示: > 我想用这个YAML文件实现的是,在pod“nginx”中,有

  • 我对javaee/EJB比较陌生,我已经读了很多关于javaee容器的书。我有使用web容器(JBoss中的WAR文件)的经验。我还知道JBoss也可以用作JavaEE容器。 JavaEE容器和Web容器之间的区别是什么? 我知道JavaEE也能够包含一个。战争档案。它们不同吗?它们的区别是什么?是否有特定于供应商的偏好,哪一个更好?

  • 没错,STL有迭代器、算法和函数对象,但对于大多数C++程序员,容器是最突出的。它们比数组更强大更灵活,可以动态增长(也常是缩减),可以管理属于它们自己的内存,可以跟踪它们拥有的对象数目,可以限制它们支持操作的算法复杂度等等。它们的普及是很容易理解的。它们比竞争对手更好,不管竞争对手是来自其他库或你自己写的容器类型。STL容器不只是好,而是相当好。 本章关注的是可以适用于所有STL容器的指导方针。

  • 简介 Swoft 基于 PSR-11 规范设计了自己容器,并基于 注解 增强了它的功能。容器是 Swoft 最重要的设计,称得上是 Swoft 的核心精髓,也是 Swoft 各模块的实现基础。本章节将会对容器的相关基础知识做一个介绍,以便大家更好的理解容器。 前置知识 - IoC IoC 即控制反转(Inversion of Control),它不是一门技术而是一种设计思想。利用 IoC 将你设计

  • 帮助用户解决涉及容器集群、容器部署、容器编排等方面的。 容器管理包括哪些内容? 包括容器集群、容器服务、容器编排等方面内容。 支持哪些类型的容器平台? 支持Docker,通过Kubernetes管理Docker,实现监控和生命周期管理。

  • 容器主要包括容器服务、容器编排和容器集群。 相关概念介绍 容器集群:即Kubernetes集群,包括控制节点和计算节点,部署在虚拟机上。 无状态(deployment):deployment通过声明pod模板等信息部署无状态应用,适用于pod完全一样、没有顺序、无所谓运行在哪台主机的应用。 有状态(statefulset):statefulset主要用于部署实例之间有不对等关系,以及实例对外部数据

  • 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行

  • 容器用于存放类实例对象,容器中的对象类我们称之为 Bean。通过容器实例化出来的对象,我们可以对它们进行注入操作。 配置扫描命名空间 应用启动时,会扫描配置中设定的命名空间,扫描到的类才可以通过容器使用 Bean 名称获取对象。 支持在项目、子服务器的配置文件中配置: return [ 'beanScan' => [ 'ImiApp\Model', 'I