对于 Docker Desktop for Mac 和 Windows,host.docker.internal
会自动解析为宿主机的 IP 地址。然而,在 Linux 上,Docker 默认不提供 host.docker.internal
这个功能。但是,您可以通过添加一个额外的主机名参数来实现类似的功能。
以下是如何在 Linux 上运行 Laravel 容器以连接到本机 MySQL 实例的步骤:
- 获取宿主机的 IP 地址。在大多数 Linux 发行版中,您可以使用
ifconfig
或ip addr
命令来查找 IP 地址。 - 运行带有自定义主机名的 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
- 修改 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>
- 要使这些设置生效,请确保重启 Laravel 服务。
执行以上步骤后,Laravel 容器应成功连接到本机(宿主机)上运行的 MySQL 实例。请注意,根据防火墙和网络设置的不同,可能需要调整防火墙规则以允许连接。