docker-compose.yml 里加入这一条: extra_hosts: - "host.docker.internal:host-gateway" 变成: services: app: image: ... container_name: ... ... extra_hosts: - "host.docker.internal:host-gateway" 与此同时, MySQL 需要监听在 docker 的网卡上: # ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000 link/ether 00:0c:ff:cc:af:af brd ff:ff:ff:ff:ff:ff altname enp0s18 altname ens18 inet 172.16.212.135/24 brd 172.16.212.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80:20c:29ff:3::bca/64 scope global valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 76:1f:8c:eb:62:f8 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever 25: br-c5516318dfee: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 7e:e9:0e:61:6e:cb brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 brd 172.18.255.255 scope global br-c5516318dfee valid_lft forever preferred_lft forever inet6 fe80::7ce9:eff:fe61:6ecb/64 scope link valid_lft forever preferred_lft forever 这里可以看到 docker0 网卡的地址是 172.17.0.1, 也就是容器内 host.docker.internal 会解析到的地址 打开 MySQL 配置文件, 位于: /etc/mysql/mysql.conf.d/mysqld.cnf 将 bind-address = 127.0.0.1 改为 bind-address = 127.0.0.1,172.17.0.1 重启 MySQL: systemctl restart mysql 即可完成配置
2025-02-28
发表者 Venus
配置 docker container 连接到主机上的 MySQL 服务已关闭评论