如何解决Docker连接本地MySQL服务失败的问题

 更新时间:2025年06月13日 15:00:07   作者:我想要身体健康  
这篇文章主要介绍了如何解决Docker连接本地MySQL服务失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题描述

在学习 Docker 和 Go 时,遇到了一个连接 MySQL 数据库失败的问题。

具体情况如下:

使用以下命令运行 Docker 容器:

docker run --rm -p 8080:8080/tcp --env-file .env my-project:latest

.env 文件中的内容如下:

DB_HOST=127.0.0.1
DB_USERNAME=root
DB_NAME=mydbs
DB_PASS=root123
AUTH_GEN_URL=https://api.learning.mydbs.id

在 Windows 上使用 Docker Desktop,报错信息为:dial tcp 127.0.0.1:3306: connect: connection refused

这意味着在 IP 127.0.0.1 和端口 3306 上没有数据库服务在监听。

问题分析

在默认的网络模式下,127.0.0.1 指的是容器内部的地址,而不是主机的地址。

因此,当容器尝试连接 127.0.0.1:3306 时,它实际上是在连接容器自身的 3306 端口,而不是主机上的 MySQL 服务。

解决方法

对于 Windows 和 Mac 用户

在 Windows 和 Mac 上,可以使用 host.docker.internal 来代替 127.0.0.1

这样可以确保容器内部的服务正确连接到运行在主机上的 MySQL 实例。

修改后的 .env 文件如下:

DB_HOST=host.docker.internal
DB_USERNAME=root
DB_NAME=mydbs
DB_PASS=root123
AUTH_GEN_URL=https://api.learning.mydbs.id

这样修改后,再次运行 Docker 容器,问题应能得到解决。

对于 Linux 用户

在 Linux 上,解决这个问题更加简单,只需要在运行 Docker 容器时添加 --network="host" 参数即可。

这样,容器将直接使用主机的网络,127.0.0.1 将指向主机自身。

命令如下:

docker run --rm --network="host" --env-file .env my-project:latest

总结

以上是解决 Docker 连接本地 MySQL 服务失败问题的详细步骤。在不同操作系统上,解决方法有所不同:

  • Windows 和 Mac 用户可以使用 host.docker.internal
  • Linux 用户可以使用 --network="host" 参数。

通过以上步骤,相信你已经能够成功解决 Docker 容器中无法连接本地 MySQL 数据库的问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 防火墙控制Docker端口开放与关闭

    防火墙控制Docker端口开放与关闭

    本文主要介绍了防火墙控制Docker端口开放与关闭,通过实例演示了如何配置防火墙规则来实现对Docker端口的控制,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 如何使用docker部署Dashdot工具箱

    如何使用docker部署Dashdot工具箱

    dashdot是一个简洁清晰的服务器数据仪表板,基于React实现 ,主要是显示操作系统、进程、存储、内存、网络这五个的数据,这篇文章主要介绍了如何使用docker部署Dashdot工具箱,需要的朋友可以参考下
    2024-02-02
  • 以示例讲解Clickhouse Docker集群部署以及配置

    以示例讲解Clickhouse Docker集群部署以及配置

    这篇文章主要介绍了Clickhouse Docker集群部署及配置,示例讲解的非常详细,希望可以帮助到有需要的小伙伴
    2021-08-08
  • 使用Docker安装和配置 MySQL 数据库的过程详解

    使用Docker安装和配置 MySQL 数据库的过程详解

    本文将介绍如何使用Docker来安装和配置MySQL数据库,以便在开发和测试环境中快速搭建MySQL实例,本文也是介绍两种方式进行分别是“使用镜像安装”、“使用Docker Compose安装”,感兴趣的朋友一起看看吧
    2023-12-12
  • 基于Docker部署Dubbo+Nacos服务的过程

    基于Docker部署Dubbo+Nacos服务的过程

    这篇文章主要介绍了基于Docker部署Dubbo+Nacos服务,本文介绍基于 Docker 部署一套 Dubbo + Nacos 的微服务环境,并解决容器里的 IP 及端口的访问问题,需要的朋友可以参考下
    2023-02-02
  • 基于Docker+Jenkins实现自动化部署的方法

    基于Docker+Jenkins实现自动化部署的方法

    这篇文章主要介绍了基于Docker+Jenkins实现自动化部署,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • docker部署RustDesk自建服务器的小结

    docker部署RustDesk自建服务器的小结

    本文详细介绍了如何使用Docker部署RustDesk自建服务器,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • Docker 搭建私有仓库(registry、harbor)

    Docker 搭建私有仓库(registry、harbor)

    这篇文章主要介绍了Docker 搭建私有仓库(registry、harbor),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Docker基础教程之Dockerfile语法详解

    Docker基础教程之Dockerfile语法详解

    这篇文章主要给大家介绍了关于Docker基础教程之Dockerfile语法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 释放Docker占用的存储空间的几种方法

    释放Docker占用的存储空间的几种方法

    随着Docker的广泛应用,我们经常会遇到Docker占用过多存储空间的问题,这可能是由于频繁的镜像拉取、容器创建和删除等操作导致的,本文将介绍几种方法来有效释放Docker占用的存储空间,需要的朋友可以参考下
    2024-06-06

最新评论