【发布时间】:2020-09-30 20:18:11
【问题描述】:
我需要将一个 MYSQL 容器连接到一个 Python 容器,这样我就可以在这个 Python 容器上从我的 MYSQL 获取数据库。我现在正在使用 pymysql。
我使用 docker-compose 制作了容器,我将在此处链接文档。 dockerfile.yml mysql 'my-mysql' 是 mij 自定义 mysql 镜像
version: "3.3"
services:
app-name:
build:
context: .
image: my-mysql
container_name: my-mysql
ports:
- '3308:3308'
environment:
MYSQL_ROOT_PASSWORD: 'root-password'
MYSQL_DATABASE: 'bags'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
restart: unless-stopped
expose:
- '3308'
volumes:
data:
external:
name: data
这是 python 的dockerfile.yml,“dataoverdracht”是我的自定义 python 图像
version: "3.7"
services:
app-name:
build:
context: .
image: dataoverdracht:1.0.0
container_name: dataoverdracht
ports:
- 92:8080
environment:
- TARGET=$TARGET
restart: unless-stopped
volumes:
- .:/data
volumes:
data:
external:
name: data
这是我为容器连接mysql而编写的python代码。
import dash_html_components as html
import pymysql
import pandas as pd
connection = pymysql.connect("172.17.0.2","user","password","bags" )
cur = connection.cursor()
cur.execute("select * from filledbags LIMIT 10")
rows = cur.fetchall()
df = pd.DataFrame(rows)
print(df)
我有 dockerfiles 和 requirements.txt 之类的文档,但我可以向您保证,它们没有任何问题,唯一可以方便的是从 dockerfile python 公开,这是 EXSPOSE 8080。
当我尝试连接它们时,我会收到错误
pymysql.err.OperationalError: (1045, "Access denied for user 'user'@'172.18.0.2' (using password: YES)")
有人可以向我解释我的代码有什么问题吗?顺便说一句:我确实在这个网站上检查了不同的问题我读了一些关于更改 my.cnf 我试图寻找我的绑定地址,但它没有包含在这个文件中,所以这似乎不是解决方案。
【问题讨论】:
-
我建议去docs.docker.com/compose/networking 看看。因为您创建了 2 个单独的 docker compose 文件。首先检查本地计算机中 pymysql 的
url/port是什么,这将为您提供一个很好的开始,以了解应用程序包中的问题。
标签: python mysql docker pymysql