Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker安装程序,带有Python应用程序的Mysql容器_Python_Mysql_Docker - Fatal编程技术网

Docker安装程序,带有Python应用程序的Mysql容器

Docker安装程序,带有Python应用程序的Mysql容器,python,mysql,docker,Python,Mysql,Docker,我有一个运行“dockerfile/mysql”的容器,可以连接到该容器并与之交互。我正在尝试为Python应用程序构建另一个映像,它将从mysql数据库中读取数据。问题是Python应用程序需要MySQL Python,并试图在安装程序上安装它。因为这个容器不包含mysql服务器,所以我最终得到了 Downloading/unpacking MySQL-python Downloading MySQL-python-1.2.5.zip (108kB): 108kB downloaded Run

我有一个运行“dockerfile/mysql”的容器,可以连接到该容器并与之交互。我正在尝试为Python应用程序构建另一个映像,它将从mysql数据库中读取数据。问题是Python应用程序需要MySQL 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
下载/解包MySQL python 下载MySQL-python-1.2.5.zip(108kB):下载108kB 运行setup.py(路径:/tmp/pip\u build\u vagrant/MySQL-python/setup.py)包MySQL-python的egg\u信息 sh:1:mysql\u配置:未找到 回溯(最近一次呼叫最后一次): 文件“”,第17行,在 文件“/tmp/pip\u build\u vagrant/MySQL python/setup.py”,第17行,在 元数据,options=get_config() 文件“setup_posix.py”,第43行,在get_config中 libs=mysql\u config(“libs\u r”) mysql\u config中的文件“setup\u posix.py”,第25行 raise环境错误(“%s未找到”%)(mysql\u config.path,) 环境错误:未找到mysql\u配置 从命令python setup.py egg_info完成输出: sh:1:mysql\u配置:未找到 这是完全可以理解的

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


感谢添加
apt get install-y libmysqlclient dev
到您的
Dockerfile
如果您使用
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

为了避免图像大小的非比例增加(额外300MB),您可以在构建mysqlclient后从图像中删除包。 所以你可以这样做:

# 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
  • 在dockerfile中添加以下行:

    COPY ./apk_deps.sh ./apk_deps.sh
    RUN ./apk_deps.sh
    
    #! /bin/sh
    set -e
    echo "apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers mariadb-dev python3-dev"
    apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers mariadb-dev python3-dev
    echo "pip install mysqlclient"
    pip install mysqlclient
    echo "apk del .build-deps"
    apk del .build-deps
    apk add --no-cache mariadb-client-libs
    
  • 使用以下行创建apk_deps.sh文件:

    COPY ./apk_deps.sh ./apk_deps.sh
    RUN ./apk_deps.sh
    
    #! /bin/sh
    set -e
    echo "apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers mariadb-dev python3-dev"
    apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers mariadb-dev python3-dev
    echo "pip install mysqlclient"
    pip install mysqlclient
    echo "apk del .build-deps"
    apk del .build-deps
    apk add --no-cache mariadb-client-libs
    

  • 这样,我的图像大小只增加了7MB。

    我知道这样做可以解决我的问题,但这不会给我的应用程序容器添加一个mysql服务器吗?我不想要。不,它安装的是客户端,不是服务器。要安装服务器,
    apt get install-y mysql server
    -不是您想要的。