Docker – 通过pip安装模块的Python依赖关系

我正在用docker构build一个Django实现。 我使用python容器作为基础,但在我的需求文件中我有以下:

boto==2.43.0 boto3==1.4.4 botocore==1.5.55 ciscoconfparse==1.2.47 Django==1.11.4 django-appconf==1.0.2 django-auth-ldap==1.2.10 django-dbtemplates==2.0 django-debug-toolbar==1.7 easy-thumbnails==2.3 easysnmp==0.2.4 ipaddress==1.0.18 Jinja2==2.9.5 mysqlclient-1.3.10 netmiko==1.2.8 O365==0.9.5 orionsdk==0.0.6 paramiko==2.1.2 python-dateutil==2.6.0 python-ldap==2.4.32 pytz==2016.10 pyOpenSSL==17.2.0 sqlparse==0.2.3 urllib3==1.21.1 joblib==0.11 

其中一些有自己的使用python容器时失败的依赖项,例如…

  #include <net-snmp/net-snmp-config.h> ^ compilation terminated. error: command 'gcc' failed with exit status 1 ---------------------------------------- Failed building wheel for easysnmp ... ... #include "lber.h" ^ compilation terminated. error: command 'gcc' failed with exit status 1 ---------------------------------------- Failed building wheel for pyldap ... ... In file included from Modules/LDAPObject.c:9:0: Modules/errors.h:8:18: fatal error: lber.h: No such file or directory #include "lber.h" ^ compilation terminated. error: command 'gcc' failed with exit status 1 ---------------------------------------- Command "/usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-aufmftap/pyldap/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-fjdz1te2-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-aufmftap/pyldap/ 

如何安装python模块的操作系统依赖关系? 在一个容器内? python容器为我运行什么操作系统来获得正确的依赖关系?

谢谢

假设您使用的是当前最新的python:3.6映像,则需要安装一些额外的库。

Dockerfile示例(pip库位于requirements.txt文件中):

 FROM python:3.6 RUN apt-get update -y \ && apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev libsnmp-dev COPY requirements.txt requirements.txt RUN pip install -r requirements.txt 

相关问题: 我无法安装python-ldap