在Docker文件中设置mysql-connector-python

时间:2019-04-03 03:56:18

标签: python-3.x docker dockerfile protocol-buffers mysql-connector-python

我正在尝试建立一个可以在python 3.6.5中与SqlAlchemy一起使用的mysql连接。我的Dockerfile中有以下内容:

RUN pip3 install -r /event_git/requirements.txt

在Requirements.txt中,我也有

mysql-connector-python==8.0.15

但是,我无法连接到数据库。我还有什么需要设置的吗?

更新: 我可以使用8.0.5,但不能使用8.0.15。显然,增加了一个probbuff依赖项。有人知道如何处理吗?

docker文件为:

RUN apt-get -y update && apt-get install -y python3 python3-pip fontconfig wget nodejs nodejs-legacy npm
RUN pip3 install --upgrade pip
# Copy contents of this directory (i.e. full source) to image
COPY . /my_project
# Install Python dependencies
RUN pip3 install -r /event_git/requirements.txt
# Set event_git folder as working directory
WORKDIR /my_project
ENV LANG C.UTF-8

我正在通过

运行它
docker build -t event_git .;docker run -t -i event_git /bin/bash

然后执行脚本;该数据库位于我的本地计算机上。这可以在mysql-connector-python == 8.0.5上运行,但不能在8.0.15上运行,因此安装正常。我想我只需要履行添加的probuff依赖项(有关probuff依赖项的说明,请参见https://github.com/pypa/warehouse/issues/5537)。

2 个答案:

答案 0 :(得分:0)

mysql-connector-python具有Python Protobuf作为安装要求,这意味着protobuf将与mysql-connector-python一起安装。 如果这不起作用,请尝试在您的requirements.txt中添加protobuf==3.6.1

答案 1 :(得分:0)

找出问题所在。关键是import mysql.connector必须位于create_engine所在文件的顶部。仍然不确定确切的原因,但至少似乎可以定义_CONNECTION_POOLS = {}。如果有人知道为什么,请提出您的想法。