我要用下面的Dockerfile构建一个docker镜像:
FROM python:2.7-alpine
RUN set -ex \
&& apk --no-cache add --virtual build-dependencies \
&& pip install --no-cache-dir mysql-python
它通过以下方式下载软件包:
^{pr2}$并执行
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
它非常有效。 有什么想法吗?在
解决方案是使用mysqlclient包代替MySQL python,这是一个解决当前MySQL python存在的多个问题的fork。在
https://github.com/PyMySQL/mysqlclient-python
从这个comment我的理解是mysql和mariadb有一个稍有不同的API,这会导致alpine中的编译失败。在
Alpine已经提供了工作正常的
py-mysqldb
包,但是它依赖于它自己的python2
包。我的建议是:相关问题 更多 >
编程相关推荐