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

docker - 使用Docker Compose来部署Spring Boot应用程序和MySQL数据库,但Spring Boot无法访问MySQL,大家帮忙看看怎么解决?

东方镜
2023-07-19

问题描述

1、本地启动spring 应用程序 可成功连接容器中的 mysql 数据库
2、Docker Compose部署的容器内Spring Boot应用程序无法访问 另一个容器的 MySQL


说明:两个容器在同一个docker内

docker-compose.yml 配置文件如下:

图片.png

version: "3.9"services:  app:    build:      context: .      dockerfile: Dockerfile    ports:      - 8989:8989    environment:      - TZ=Asia/Shanghai    depends_on:      - db    networks:      - mynetwork  db:    image: mysql:5.7    container_name: mysql-test    environment:       # 数据库        MYSQL_DATABASE: test        # 设置root用户密码        MYSQL_ROOT_PASSWORD: admin        TZ: Asia/Shanghai    ports:      - 3309:3306    expose:      - 3306    networks:      - mynetwork    volumes:      - ./mysql:/var/lib/mysqlnetworks:  mynetwork:

application.yml 内容 :

图片.png

# 数据库配置server:  port: 8989spring:  datasource:    url: jdbc:mysql://db:3309/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai    username: root    password: admin    driverClassName: com.mysql.cj.jdbc.Driver    connection-timeout: 3600

请问哪里的配置有问题 ?

共有2个答案

太叔凌龙
2023-07-19

容器组内相互访问,通信地址为服务名:容器自身端口,也就是db:3306

澹台鸿光
2023-07-19

端口应该使用 3306

3309 是暴露在外面的端口,而同一个 network 下面可以直连。

 类似资料:
  • 上述代码,就是想实现取出数组内文本并替换部分内容,然后显示替换后的文本。结果提示显示失败。提示大字段信息不存在。 哪位大佬来看看怎么解决 ...= =....

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 我想用springboot项目生成MySQL数据库。我创建了一个maven项目,这是pom.xml:

  • 数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库的名称都是有实际意义的,这样就可以清晰的看出每个数据库用来存放什么数据。在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。 在 MySQL 中,可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据

  • 我想做的是,从我的spring boot应用程序连接到Docker中的mysql数据库。每个都在各自的容器中。 但是我一定有什么问题,因为我做不到。 为了保持简单: 应用程序属性: MySQL的docker组合: 很简单,对吧?数据库我从开始: 到目前为止,一切似乎都很顺利。 现在我已经启动了db,对于应用程序来说,这是它的docker组件。yml: 对于它的Dockerfile,我使用Linux

  • 我正在尝试从Spring Boot应用程序连接到mySQL数据库。然而,当我试图运行它时,它显示出错误。 我如何解决这个问题? 错误 从我的文件中添加代码片段 pom。xml 应用属性 堆栈跟踪 我还没有在sql中手动创建表,因为我认为spring.jpa.hibernate.ddl-Auto=date应该这样做