docker 实例连接本机 MySQL

对于 Docker Desktop for Mac 和 Windows,host.docker.internal 会自动解析为宿主机的 IP 地址。然而,在 Linux 上,Docker 默认不提供 host.docker.internal 这个功能。但是,您可以通过添加一个额外的主机名参数来实现类似的功能。

以下是如何在 Linux 上运行 Laravel 容器以连接到本机 MySQL 实例的步骤:

  1. 获取宿主机的 IP 地址。在大多数 Linux 发行版中,您可以使用 ifconfigip addr 命令来查找 IP 地址。
  2. 运行带有自定义主机名的 Laravel 容器。假设您的镜像名为 laravel_app,并将 <your_host_ip> 替换为您在第一步中找到的宿主机 IP 地址:
   docker run --name laravel_app_container --add-host host.docker.internal:<your_host_ip> -p 80:80 -d laravel_app
  1. 修改 Laravel 项目目录中的 .env 文件。将 DB_HOST 的值更改为 host.docker.internal,同时确保其他数据库配置详细信息与您之前设置的一致:
   DB_CONNECTION=mysql
   DB_HOST=host.docker.internal
   DB_PORT=3306
   DB_DATABASE=<database_name>
   DB_USERNAME=<username>
   DB_PASSWORD=<user_password>
  1. 要使这些设置生效,请确保重启 Laravel 服务。

执行以上步骤后,Laravel 容器应成功连接到本机(宿主机)上运行的 MySQL 实例。请注意,根据防火墙和网络设置的不同,可能需要调整防火墙规则以允许连接。

发表评论