访问容器中的数据库

Accessing a Database in a Container

我有一个 python-app docker 在一个容器中(windows 10),它连接到一个 MySQL8.0 数据库,加载和操作数据,转换为 xml 并使用 MQTT 发布它们。尽管 docker 新手理解起来有些困难,但我还是为 python-app 构建了一个简单的图像和容器。问题是,我和我的团队可能希望将数据库放在 docker 中。是否可以将 tables/data 插入我们数据库中的 docker 容器中?

所有在线数据库都有 docker-图像,但我未能通过我们与数据和表格一起使用的数据库。 我之前搜索过,发现了一些有趣的帖子,但 none 准确地回答了我的问题

这是连接到数据库的代码部分:

conc = mysql.connector.connect(user='root3r', password='**********', host='******',
                               database='sql_data', auth_plugin='mysql_native_password')

如果数据库在容器内,我应该在主机参数中传递什么 IP?

编辑:好的,经过多次试验,我使用了命令 "docker-machine ip" 并且该 IP 对我有用,所以我的本地应用程序设法连接到 Dockerised-DB 但我无法从任何其他远程机器连接一样python.app

docker-机器 IP 是否仅对 docker 主机可见?

如果您正在使用 docker-compose Docker 将在所有组合容器之间建立一个内部网络。在这种情况下,您可以将容器的名称作为主机传递。 例如在 docker-compose.yml 文件中有 2 个容器在运行:

version: "3.2"
services:
  api:
    image: python
  db_container_name:
    image: postgres

您可以从 api 向数据库容器发起 HTTP 调用,例如:

conc = mysql.connector.connect(user='root3r',password='**********',hostst='db_container_name',database='sql_data',auth_plugin='mysql_native_password') ```

经过一些试验,

-docker-机器ip

-添加容器的镜像名称(例如:db)

帮我解决了这个案子。