docker build在“下载mariadb”时失败

问题描述

执行'docker build -t $ name'。在以下问题上失败。它显示“找不到mariadb_config”,但我已经在此suse15 linux服务器上安装了mariadb。

Collecting mariadb==1.0.4
  Downloading mariadb-1.0.4.tar.gz (66 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -c 'import sys,setuptools,tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lxx0giq5/mariadb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-lxx0giq5/mariadb/setup.py'"'"';f=getattr(tokenize,'"'"'open'"'"',open)(__file__);code=f.read().replace('"'"'\r\n'"'"','"'"'\n'"'"');f.close();exec(compile(code,__file__,'"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-hicsuruq
         cwd: /tmp/pip-install-lxx0giq5/mariadb/
    Complete output (17 lines):
    /bin/sh: 1: mariadb_config: not found
    Traceback (most recent call last):
      File "<string>",line 1,in <module>
      File "/tmp/pip-install-lxx0giq5/mariadb/setup.py",line 26,in <module>
        cfg = get_config(options)
      File "/tmp/pip-install-lxx0giq5/mariadb/mariadb_posix.py",line 59,in get_config
        cc_version = mariadb_config(config_prg,"cc_version")
      File "/tmp/pip-install-lxx0giq5/mariadb/mariadb_posix.py",line 29,in mariadb_config
        "mariadb_config not found.\n\nPlease make sure,that MariaDB Connector/C is installed on your system.\n"
    OSError: mariadb_config not found.

    Please make sure,that MariaDB Connector/C is installed on your system.
    Either set the environment variable MARIADB_CONfig or edit the configuration
    file 'site.cfg' and set the 'mariadb_config option,which should point
    to the mariadb_config utility.
    The MariaDB Download website at <https://downloads.mariadb.com/Connectors/c/>
    provides latest stable releease of Connector/C.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
The command '/bin/sh -c pip3 install -r requirements.txt' returned a non-zero code: 1

和相关的Dockerfile内容如下。

FROM python:3.6.5

workdir /slic-scripts

copY requirements.txt .

RUN pip install --upgrade pip

RUN pip3 install -r requirements.txt

copY . .

CMD ["python3","/slic-scripts/run_cmd.sh"]

解决方法

在运行pip3 install之前,您需要在Dockerfile中安装MariaDB Connector / C。将其安装在主机上并没有帮助。

,

就像@Jonathan Jacobson所写的那样,您需要在Docker映像中安装MariaDB连接器,然后再继续进行pip install

由于python:3.6.5基于debian Stretch,因此那里提供的连接器是2.3.2,mariadb模块不支持(如prerequisites中所述)。要解决此问题,您可能需要切换到其他图片(例如3.6克星)。

这是一个工作测试:

FROM python:3.6-buster

RUN apt-get update \
    && apt-get -yy install libmariadb-dev

WORKDIR /slic-scripts
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip3 install -r requirements.txt
COPY . .

CMD ["python3","/slic-scripts/run_cmd.sh"]
,

使用以下命令安装MariaDB Connector / C,这是一个依赖项。

sudo apt-get install libmariadb3 libmariadb-dev

RUN pip3 install -r requirements.txt