【问题标题】:Erorr using MySQL and Spring boot app with docker将 MySQL 和 Spring Boot 应用程序与 docker 一起使用时出错
【发布时间】:2025-12-27 18:25:06
【问题描述】:

我尝试将我的 Spring Boot 应用程序与 MySQL Docker 容器连接起来。 我跑了:

docker run --name mysql-demo -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -d mysql:lat

得到了

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                 NAMES
8d540d1824b9   mysql:latest   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   3306/tcp, 33060/tcp   mysql-demo

在我的 spring 应用程序中,我有一个属性文件:

spring.datasource.url=jdbc:mysql://mysql-demo:3306/test
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

当我尝试运行此应用或构建 jar 时,它会因此错误而崩溃

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

如果我在没有 docker 的情况下在本地使用 mysql 时应用程序正常

【问题讨论】:

    标签: java mysql spring spring-boot docker


    【解决方案1】:

    您没有公开端口 3306。您必须使用 -p3306:3306 来做到这一点,否则您将无法访问此端口。

    docker run -p3306:3306 --name mysql-demo -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -d mysql:lat
    

    【讨论】:

    • 来自守护进程的错误响应:端口不可用:监听 tcp 0.0.0.0:3306:绑定:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。我尝试使用其他端口 - docker run -p 3307:3306 --name mysql-demo -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa-e MYSQL_PASSWORD=password -d mysql:latest 仍然无法正常工作
    • 那你必须停止你本地的Mysql或者使用另一个端口比如-p3307:3306
    【解决方案2】:

    我在同一个网络中运行了 2 个容器

    更多信息在这里: how to access mysql docker container in spring boot docker container

    【讨论】:

      最近更新 更多