我将通过以下Dockerfile构建docker映像:
FROM python:2.7-alpine
RUN set -ex \
&& apk --no-cache add --virtual build-dependencies \
&& pip install --no-cache-dir mysql-python
它将通过以下方式下载软件包:
Downloading https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip (108kB)
并执行
python setup.py install
但失败,并返回以下错误:
_mysql.c: In function '_mysql_ConnectionObject_ping':
_mysql.c:2005:41: error: 'MYSQL {aka struct st_mysql}' has no member named 'reconnect'
if ( reconnect != -1 ) self->connection.reconnect = reconnect;
^
error: command 'gcc' failed with exit status 1
但是当我尝试使用时:
FROM python:2.7
完全有效。 有什么主意吗?
答案 0 :(得分:0)
解决方案是使用 mysqlclient 软件包而不是MySQL-python,这是一个叉子,可以解决当前MySQL-python所具有的多个问题。
答案 1 :(得分:0)
我对此comment的理解是,mysql和mariadb具有稍微不同的API,这会导致在Alpine中编译失败。
Alpine已经提供了可以正常工作的py-mysqldb
程序包,但是它依赖于自己的python2
程序包。我的建议是使用类似以下内容的
FROM alpine:3.8
RUN apk --no-cache add python2 py-mysqldb