使用 Docker 时,在 MySQL 数据库上使用白名单 IP 的最佳方式是什么?

What is the best way to work with whitelisted IP's on a MySQL DB when using Docker?

我有一个服务器,其中包含一个连接到两个外部 MySQL 数据库的 python 文件。可以轻松访问其中一个数据库,而另一台服务器需要将 IP 列入白名单才能访问该数据库。该服务器的 IP 已列入白名单,并在 运行.

时按预期工作

然而,当我尝试 运行 应用程序的 docker 化变体时,问题出现了。第一个数据库 运行s 和以前一样,但第二个数据库不再有效。在容器内时,我可以 ping 第二个数据库并且它可以工作,但是每当我尝试通过服务器上托管的代码访问它时,它不会 return 使用它的任何函数中的数据。我注意到容器有一个单独的 IP,并且可能会导致问题,因为 docker 容器的 IP 不会被列入白名单并且可能是问题开始的地方。我是 Docker 的新手,所以任何对我有帮助的文档链接都将非常有帮助。

所以对于将来处理这种情况的任何人,我添加了行

network_mode: "主机"

到我的 docker.compose.yaml 文件。 这是一些与此相关的文档:https://docs.docker.com/network/host/

基本上发生的事情是容器无法被白名单识别并且不允许访问第二个数据库。通过此更改,它允许容器与托管它的服务器共享同一网络,并且由于该服务器之前已列入白名单,因此一切都顺利进行。

如果您使用docker,则使用

--网络=主机

在您的 运行 命令中。这是关于此添加功能的 SO link: