在开发环境下使用Docker Desktop,可能`host.docker.internal`是最方便的。
首先,检查宿主机上的MySQL和Redis的监听地址。对于MySQL,配置文件通常是/etc/mysql/my.cnf或者/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address项,确保是0.0.0.0而不是127.0.0.1。修改后需要重启MySQL服务。对于Redis,配置文件是redis.conf,找到bind 127.0.0.1,可能需要改为0.0.0.0或者注释掉,同样需要重启Redis。
在容器内部连接时,使用host.docker.internal。比如,如果MySQL在宿主机上的端口是3306,那么容器中的应用配置数据库主机为host.docker.internal:3306。但需要确保宿主机的防火墙(如ufw)允许来自Docker网桥的流量,比如允许172.17.0.0/16网段的连接。
对于Linux系统,如果`host.docker.internal`不可用,可以通过在运行容器时添加`--add-host`参数手动设置。例如:
docker run -d \
-p 8889:8889 \
--add-host=host.docker.internal:host-gateway \
--name api-admin \
admin
建立连接直接使用host.docker.internal当作IP地址即可
url: jdbc:mysql://host.docker.internal:3306/