2014-09-05 80 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 
相關問題