2014-09-05 38 views
4

我有一个容器运行“dockerfile/mysql”,我可以连接并与之交互。我试图为将从mysql数据库读取的Python应用程序构建另一个映像。问题是Python应用程序需要MySQL-python并尝试在安装时进行安装。因为这个容器不包含mysql服务器,所以我结束了;Docker设置与Python应用程序的Mysql容器

Downloading/unpacking MySQL-python 
Downloading MySQL-python-1.2.5.zip (108kB): 108kB downloaded 
Running setup.py (path:/tmp/pip_build_vagrant/MySQL-python/setup.py) egg_info for package MySQL-python 
sh: 1: mysql_config: not found 
Traceback (most recent call last): 
    File "<string>", line 17, in <module> 
    File "/tmp/pip_build_vagrant/MySQL-python/setup.py", line 17, in <module> 
    metadata, options = get_config() 
    File "setup_posix.py", line 43, in get_config 
    libs = mysql_config("libs_r") 
    File "setup_posix.py", line 25, in mysql_config 
    raise EnvironmentError("%s not found" % (mysql_config.path,)) 
EnvironmentError: mysql_config not found 
Complete output from command python setup.py egg_info: 
sh: 1: mysql_config: not found 

这是完全可以理解的。

我应该如何设置我的Python应用程序容器(使用SQLAlchemy)从mysql容器中读取?

感谢

回答

9

添加apt-get install -y libmysqlclient-devDockerfile

+0

我知道,这样做会解决我的问题,但不会添加一个MySQL服务器到我的应用程序容器?我不想要。 – noisyboiler 2014-09-05 11:45:24

+1

不,它安装客户端,而不是服务器。要安装服务器,“apt-get install -y mysql-server” - 不是你想要的。 – 2014-09-05 12:19:29

+0

不适用于高山地区。 – 2018-01-05 16:07:02

0

如果使用python:3.5-alpine,您可以通过添加本在Dockerfile安装mysqlclient

RUN set -e; \ 
     apk add --no-cache --virtual .build-deps \ 
       gcc \ 
       libc-dev \ 
       linux-headers \ 
       mariadb-dev \ 
       python3-dev \ 
       postgresql-dev \ 
     ; 

所有Dockerfile将是这样的:

# Version: 0.0.1 
FROM python:3.5-alpine 
ENV PYTHONUNBUFFERED 1 
RUN set -e; \ 
     apk add --no-cache --virtual .build-deps \ 
       gcc \ 
       libc-dev \ 
       linux-headers \ 
       mariadb-dev \ 
       python3-dev \ 
       postgresql-dev \ 
     ; 
RUN mkdir /djcode 
WORKDIR /djcode 
ENV REFRESHED_AT 2017-12-25 
ADD requirements.txt /djcode/ 
RUN pip install --no-cache-dir -r /djcode/requirements.txt 
RUN pip install uwsgi 
ADD . /djcode/ 
EXPOSE 6001 
相关问题