我正在尝试运行一个与 kafka 通信的简单 python 应用程序。我正在寻找使用 Alpine 容器。这是我当前的 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。构建失败
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) 有没有办法在不构建容器的情况下使其工作?如果我可以简单地将库复制到 alpine 就足够了。或者即使我可以复制 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
镜像基于 alpine linux 3.4: Dockerfile
所以你首先需要正确移动到边缘 Alpine 分支:Edge
这是通过以下方式完成的:
RUN sed -i -e 's/v3\.4/edge/g' /etc/apk/repositories \
&& apk upgrade --update-cache --available \
然后你就可以安装librdkafka
和依赖了。
https://stackoverflow.com/questions/43664505/
相关文章:
react-native - redux-observable 获取当前位置
java - 找不到属性 : Error in spring boot 的设置方法
regex - 正则表达式 : convert a list of name and value p
pymc3 - BetaBinomial 和 "Beta and Binomial"之间的区别
sql - 为什么我需要在重命名之前将数据库设置为 single_user?
azure - 在 Debian 上安装 AzureAD 模块