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