Using confluent-kafka python client in alpine container Using confluent-kafka python client in alpine container docker docker

Using confluent-kafka python client in alpine container


here a way to make it work:

FROM python:3.6-alpineMAINTAINER Ashic Mahtab (ashic@live.com)RUN mkdir -p /usr/src/appWORKDIR /usr/src/appRUN sed -i -e 's/v3\.4/edge/g' /etc/apk/repositories \    && apk upgrade --update-cache --available \    && apk --no-cache add librdkafkaCOPY requirements.txt /usr/src/app/RUN pip install --no-cache-dir -r requirements.txtCOPY api /usr/src/app/apiCOPY static /usr/src/app/staticCMD ["python", "api/index.py"]

Here an explanation:

python:3.6-alpine image are based on alpine linux 3.4: Dockerfile

So you first need to correctly move to edge alpine branch: Edge
This is done by the line:

RUN sed -i -e 's/v3\.4/edge/g' /etc/apk/repositories \    && apk upgrade --update-cache --available \

Then you can install librdkafka and the dependencies.


I maintain the ucalgary/python-librdkafka image that extends the official python:3.6-alpine image and installs librdkafka from its source releases. You're welcome to use the image, or take a look at the Dockerfile to see how it's built.


Since you're on edge anyway, you could also just use python3 from there:

% cat Dockerfile FROM alpine:edgeMAINTAINER Gerd Flaig <stackoverflow@gerd.flaig.name>RUN apk update && apk add --no-cache python3 librdkafka && \    python3 -m ensurepip && \    rm -r /usr/lib/python*/ensurepip && \    pip3 install --upgrade pip setuptools && \    rm -r /root/.cache% docker build .Sending build context to Docker daemon  2.048kBStep 1/3 : FROM alpine:edgeedge: Pulling from library/alpine71c5a0cc58e4: Pull completeDigest: sha256:99588bc8883c955c157d18fc3eaa4a3c1400c223e6c7cabca5f600a3e9f8d5cdStatus: Downloaded newer image for alpine:edge ---> 8914de95a28dStep 2/3 : MAINTAINER Gerd Flaig <stackoverflow@gerd.flaig.name> ---> Running in 658b056c4e16 ---> a3b2485fabb0Removing intermediate container 658b056c4e16Step 3/3 : RUN apk update && apk add --no-cache python3 librdkafka &&     python3 -m ensurepip &&     rm -r /usr/lib/python*/ensurepip &&     pip3 install --upgrade pip setuptools &&     rm -r /root/.cache ---> Running in d7c3f3b30d89fetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gzfetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gzv3.5.0-4449-g8922925e5c [http://dl-cdn.alpinelinux.org/alpine/edge/main]v3.5.0-4450-gb7b4122d6f [http://dl-cdn.alpinelinux.org/alpine/edge/community]OK: 8348 distinct packages availablefetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gzfetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz(1/16) Installing libressl2.5-libcrypto (2.5.3-r1)(2/16) Installing libgcc (6.3.0-r3)(3/16) Installing libressl2.5-libssl (2.5.3-r1)(4/16) Installing libstdc++ (6.3.0-r3)(5/16) Installing librdkafka (0.9.4-r1)(6/16) Installing libbz2 (1.0.6-r5)(7/16) Installing expat (2.2.0-r0)(8/16) Installing libffi (3.2.1-r3)(9/16) Installing gdbm (1.12-r0)(10/16) Installing xz-libs (5.2.3-r0)(11/16) Installing ncurses-terminfo-base (6.0-r7)(12/16) Installing ncurses-terminfo (6.0-r7)(13/16) Installing ncurses-libs (6.0-r7)(14/16) Installing readline (6.3.008-r5)(15/16) Installing sqlite-libs (3.18.0-r0)(16/16) Installing python3 (3.6.1-r1)Executing busybox-1.26.2-r0.triggerOK: 75 MiB in 27 packagesRequirement already satisfied: setuptools in /usr/lib/python3.6/site-packagesRequirement already satisfied: pip in /usr/lib/python3.6/site-packagesRequirement already up-to-date: pip in /usr/lib/python3.6/site-packagesCollecting setuptools  Downloading setuptools-35.0.2-py2.py3-none-any.whl (390kB)Collecting packaging>=16.8 (from setuptools)  Downloading packaging-16.8-py2.py3-none-any.whlCollecting appdirs>=1.4.0 (from setuptools)  Downloading appdirs-1.4.3-py2.py3-none-any.whlCollecting six>=1.6.0 (from setuptools)  Downloading six-1.10.0-py2.py3-none-any.whlCollecting pyparsing (from packaging>=16.8->setuptools)  Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB)Installing collected packages: pyparsing, six, packaging, appdirs, setuptools  Found existing installation: setuptools 28.8.0    Uninstalling setuptools-28.8.0:      Successfully uninstalled setuptools-28.8.0Successfully installed appdirs-1.4.3 packaging-16.8 pyparsing-2.2.0 setuptools-35.0.2 six-1.10.0 ---> cfb1033ceec0Removing intermediate container d7c3f3b30d89Successfully built cfb1033ceec0