访问容器中的数据库

时间:2019-07-18 10:38:44

标签: python mysql docker mysql-connector-python

我在一个容器(现在是Windows 10)中将一个python-app泊坞化了,该容器连接到MySQL8.0 DB,加载和处理数据,转换为xml并使用MQTT发布。尽管Docker新手在理解上有些麻烦,但我仅为python-app构建了一个简单的图像和容器。问题是,我和我的团队可能希望将数据库放置在泊坞窗内。是否可以在docker-container中将表/数据插入我们的数据库中?

所有在线数据库都有docker-images,但我无法通过我们将数据和表使用的数据库。 Access host database from a docker container 我之前搜索过,发现一些有趣的帖子,但没有一个能完全回答我的问题

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

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

如果DB在容器内,我应该在host参数中传递哪个IP?

编辑:好的,经过多次试验,我使用了命令“ docker-machine ip”,并且该IP对我有用,所以我的本地应用程序设法连接到Dockerized-DB BUT,但我无法从任何其他具有相同配置的远程计算机进行连接python.app

仅对Docker主机可见docker-machine IP吗?

2 个答案:

答案 0 :(得分:0)

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

 tokens = [tokens[:tokens.index(v)] if v == 'note' else v for v in tokens]

您可以使用以下方法从api到db容器进行HTTP调用:

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

答案 1 :(得分:0)

经过一些实验,

-docker-machine ip

AND

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

为我解决了案件。