python - Alpine Docker 定义特定的 python 版本 (python3-3.8.7-r0 :breaks: world[python3=3. 6.9-r3])

标签 python python-3.x docker alpine

当我想建立我的阿尔卑斯山 docker ,我得到一个错误,当我定义特定的Python版本。
我的 Dockerfile:

FROM python:3-alpine

RUN apk --no-cache add build-base openldap-dev python2-dev 'python3=3.6.9-r3' 'python3-dev=3.6.9-r3'
RUN pip3 install python-ldap sqlalchemy requests
ADD ucs-root-ca.crt /usr/local/share/ca-certificates/foo.crt
RUN chmod 644 /usr/local/share/ca-certificates/foo.crt && update-ca-certificates

COPY templates ./templates
COPY api.py filedb.py syncer.py ./

VOLUME [ "/db" ]
VOLUME [ "/conf/dovecot" ]
VOLUME [ "/conf/sogo" ]

ENTRYPOINT [ "python3", "syncer.py" ]
我收到以下错误,当我要建立我的dockerfile:
ERROR: unable to select packages:
  python3-3.8.7-r0:
    breaks: world[python3=3.6.9-r3]
    satisfies: python3-dev-3.8.7-r0[python3=3.8.7-r0]
  python3-dev-3.8.7-r0:
    breaks: world[python3-dev=3.6.9-r3]
The command '/bin/sh -c apk --no-cache add build-base openldap-dev python2-dev 'python3=3.6.9-r3' 'python3-dev=3.6.9-r3'' returned a non-zero code: 2

最佳答案

apk 的错误是因为在 Alpine 存储库中找不到特定的 Python 3 版本。python3=3.6.9-r3目前只住在Alpine 3.9 main存储库:
https://pkgs.alpinelinux.org/package/v3.9/main/x86/python3python:3-alpine图像似乎基于最新的 Alpine 3.13。因此,找不到 3.6.9 的包。
要安装该特定版本,您必须告诉 apk使用该 3.9 存储库(如果您不在 Alpine 3.9 上):

apk add python3-dev=3.6.9-r3 --repository=http://dl-cdn.alpinelinux.org/alpine/v3.9/main
但是,有一个问题:python3-dev=3.6.9-r3与 Alpine 3.9 兼容,不会与以后的 Alpine 版本很好地混合。例如:
  gdbm-1.19-r0:
    conflicts: gdbm-1.13-r1
               gdbm-1.13-r1[so:libgdbm_compat.so.4=4.0.0]
    satisfies: python3-3.6.9-r3[so:libgdbm_compat.so.4]
               libsasl-2.1.27-r10[so:libgdbm.so.6]
               python2-2.7.18-r1[so:libgdbm_compat.so.4]
因此,如果您倾向于使用 Python 3.6.9具体来说,您必须在相当老的 Alpine 3.9 上运行它。
如果您不介意使用较旧的 Alpine 版本,只需将 Dockerfile 中的第一行替换为:
FROM alpine:3.9

关于python - Alpine Docker 定义特定的 python 版本 (python3-3.8.7-r0 :breaks: world[python3=3. 6.9-r3]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66221278/

相关文章:

python - pxssh 连接到 ssh 代理; read_nonblocking() 超时

python - 当某个应用程序在 Python 中启动时如何触发函数

python - Docker中的端口映射

python - Python3 是否可以免受可能即将到来的 DST 更改的影响?

linux - Docker 运行 - 用户组没有按预期工作?

windows - 如何检查 Docker 是否在 Windows 上运行?

python - 独立地执行 stdout 和 stderr,不增加抖动

python - 和python中的操作重载

python - 配置 suds 以将自定义响应 xml 解析器用于大响应有效负载

mysql - docker mysql wordpress 端口没有连接