首页 > 解决方案 > 访问容器中的数据库

问题描述

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

所有在线数据库都有 docker-images,但我未能通过我们与数据和表格一起使用的数据库。 从我之前搜索过的 docker 容器访问主机数据库 ,我发现了一些有趣的帖子,但没有一个能准确回答我的问题

这是连接到 db 的代码部分:

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-machine IP 是否仅对 docker 主机可见?

标签: pythonmysqldockermysql-connector-python

解决方案


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

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

您可以通过以下方式从 api 到 db 容器进行 HTTP 调用:

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


推荐阅读