在高山容器中使用confluent-kafka python客户端

我试图运行一个简单的与kafka进行通信的python应用程序。 我正在寻找一个高山容器。 这是我目前的dockerfile(这不是最佳的…只是试图让事情现在工作)。

FROM python:3.6-alpine MAINTAINER Ashic Mahtab (ashic@live.com) RUN mkdir -p /usr/src/app WORKDIR /usr/src/app RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories RUN apk update && apk --no-cache add librdkafka COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt COPY api /usr/src/app/api COPY static /usr/src/app/static CMD ["python", "api/index.py"] 

需求文件中有confluent-kafka。 构build失败

 OK: 8784 distinct packages available fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz ERROR: unsatisfiable constraints: so:libcrypto.so.41 (missing): required by: librdkafka-0.9.4-r1[so:libcrypto.so.41] librdkafka-0.9.4-r1[so:libcrypto.so.41] librdkafka-0.9.4-r1[so:libcrypto.so.41] so:libssl.so.43 (missing): required by: librdkafka-0.9.4-r1[so:libssl.so.43] librdkafka-0.9.4-r1[so:libssl.so.43] librdkafka-0.9.4-r1[so:libssl.so.43] 

我的问题是a)有没有办法让这个工作,而不build设在容器内? 如果我可以简单地将图书馆复制到高山,那就够了。 或者,即使我可以复制librdkafka。 b)如果没有,我怎么能得到libssl和libcryto.so工作?

这里有一个方法来使其工作:

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

这里解释一下:

python:3.6-alpine图像基于高山linux 3.4: Dockerfile

所以你首先需要正确地移动到边缘高山分支: 边缘
这是由行完成的:

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

然后你可以安装librdkafka和依赖关系。

既然你处在边缘,你也可以从这里使用python3:

 % cat Dockerfile FROM alpine:edge MAINTAINER 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.048kB Step 1/3 : FROM alpine:edge edge: Pulling from library/alpine 71c5a0cc58e4: Pull complete Digest: sha256:99588bc8883c955c157d18fc3eaa4a3c1400c223e6c7cabca5f600a3e9f8d5cd Status: Downloaded newer image for alpine:edge ---> 8914de95a28d Step 2/3 : MAINTAINER Gerd Flaig <stackoverflow@gerd.flaig.name> ---> Running in 658b056c4e16 ---> a3b2485fabb0 Removing intermediate container 658b056c4e16 Step 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 d7c3f3b30d89 fetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz v3.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 available fetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz fetch 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.trigger OK: 75 MiB in 27 packages Requirement already satisfied: setuptools in /usr/lib/python3.6/site-packages Requirement already satisfied: pip in /usr/lib/python3.6/site-packages Requirement already up-to-date: pip in /usr/lib/python3.6/site-packages Collecting 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.whl Collecting appdirs>=1.4.0 (from setuptools) Downloading appdirs-1.4.3-py2.py3-none-any.whl Collecting six>=1.6.0 (from setuptools) Downloading six-1.10.0-py2.py3-none-any.whl Collecting 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.0 Successfully installed appdirs-1.4.3 packaging-16.8 pyparsing-2.2.0 setuptools-35.0.2 six-1.10.0 ---> cfb1033ceec0 Removing intermediate container d7c3f3b30d89 Successfully built cfb1033ceec0 

我维护扩展官方python:3.6-alpine图像的ucalgary / python-librdkafka图像,并从源代码版本安装librdkafka 。 欢迎您使用该映像,或者查看Dockerfile以了解它的构build方式。