python - 访问容器中的数据库
问题描述
我在一个容器(现在是 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 主机可见?
解决方案
如果您使用 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') ```
推荐阅读
- database - 日期和时间过滤器在 find() 操作中工作正常,但 $match 与 mongodb 中的聚合出现问题
- python - Ansible:获取自己模块中的所有变量?
- firebase - 如何在 Firebase 托管中编辑我的静态站点
- python - Python:将灰度numpy数组转换为.jpg而不保存到文件后的大小
- php - Laravel 5.6 如何逐行读取文本文件
- excel - VBA代码将总和显示为命名范围之外的公式
- javascript - 幻灯片切换菜单和子菜单
- java - @PathParam 没有给我路径变量
- highcharts - Highcharts - 当放大到具有未知值的区域时,yAxis 消失
- axapta - 列出对 Dynamics ax 2009 中给定表具有权限的所有用户