在Docker中使用python-ldap

本文介绍如何在Docker镜像python:alpine中安装python-ldap模块,并且尽量保持镜像的身材。

简介

python-ldap是一个Python的第三方库,包装了OpenLDAP的客户端,提供了面向对象的LDAP访问功能。 目前,它只支持Python 2.x

和其它Python包一样,它的安装命令很简单。

pip install python-ldap

然而, 在比较干净的环境下——比如Docker——安装时,会出现错误。 主要原因是,这并非一个纯粹的Python包,而是包含了C语言的内容。 安装时,会自动开始编译,需要安装环境自备编译依赖。

编译依赖

运行依赖

Dockerfile(部分)

FROM python:2.7.13-alpine

MAINTAINER "Yan QiDong <yanqd1@lenovo.com>"

RUN apk update && apk add \
        libldap \
        gcc \
        libc-dev \
        python-dev \
        openldap-dev \
    && pip install --no-cache-dir python-ldap \
    && apk del \
        gcc \
        libc-dev \
        python-dev \
        openldap-dev \
    && rm -rf /tmp/*

说明

FROM python:2.7.13-alpine

基于python:2.7.13-alpine镜像。

其中,镜像自带libcrypto1.0与libssl1.0。 在安装libldap时会自动安装libsasl,这样运行环境就齐备了。

安装前,需要准备编译环境,即gcc、libc-dev、python-dev与openldap-dev。 安装后,这些运行时非必须的模块,都可以删除。

总结

如果是用基于Debian的python:2.7.13来做,会简单很多。 只是镜像也会大很多,python:2.7.13光自身就近700MB了。


相关笔记