2014-09-05 1 views
4

У меня есть один контейнер, на котором запущен «dockerfile/mysql», с которым я могу подключиться и взаимодействовать. Я пытаюсь создать другое изображение для приложения Python, которое будет читать из mysql db. Проблема в том, что для приложения Python требуется MySQL-python и пытается установить его при настройке. Поскольку этот контейнер не поддерживает сервер mysql, я получаю;Docker Setup с контейнером Mysql для приложения Python

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-dev в свой Dockerfile.

+0

я знаю, что сделать это будет решать мой проблема, но разве это не добавит сервер mysql в контейнер приложения? которого я не хочу. – noisyboiler

+1

Нет, он устанавливает клиент, а не сервер. Чтобы установить сервер, 'apt-get install -y mysql-server' - не то, что вы хотите. –

+0

Не работает на альпийском. –

0

Если вы используете python:3.5-alpine, вы можете установить mysqlclient путем дополнения этого в вашем Dockerfile:

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 
Смежные вопросы