我正在尝试用我的dockerfile安装php7-mongodb。同样工作到昨天,但今天dockerbuild抛出以下错误
Step 4/12 : RUN apk add php7-mongodb
---> Running in b6713ea15c9d
php7-mongodb (missing):
ERROR: unsatisfiable constraints:
required by: world[php7-mongodb]
The command '/bin/sh -c apk add php7-mongodb' returned a non-zero code: 1
我尝试在dockerfile中使用apk更新和apk升级,但仍然无法正常工作。知道问题是什么吗?
我使用阿尔卑斯边缘作为基础版本。
我们可以使用以下dockerfile重新创建该问题
FROM alpine:edge
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update && apk upgrade
RUN apk add php7-mongodb
tldr:该软件包在3.9中重命名为php7-pecl-mongodb
,在以后的版本中不再存在
使用此提交将包重命名为php7-pecl-mongodb
:https://git.alpinelinux.org/aports/commit/?id=b3d534d73c690baf458d9cda5dca5ee52ca9cafc
但由于软件包的非自由许可变更,该软件包在此之后不久被删除:https://git.alpinelinux.org/aports/commit/community/php7-pecl-mongodb/APKBUILD?id=8a901de31fa055ed591d487e12f8bb9ffcc0df21
使用Alpine 3.8将为您解决问题。更改
FROM alpine:edge
至
FROM alpine:3.8
您还需要更改存储库URL,使其指向v3.8。我一直在使用main,所以第二行对我来说就像下面一样。
RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.8/main" >> /etc/apk/repositories
我认为/testing
不适用于旧版本,因此您需要尝试找出适合您的版本。或者也许其他人可以为我们澄清这一点。
这意味着你没有使用最新的Alpine,但你可以建造容器。
根据https://pkgs.alpinelinux.org/packages?name=php7-mongodb&branch=edge的说法,阿尔卑斯边缘版没有这样的包装。
最新的alpine版本在其回购中有php7-mongodb
包似乎是3.8:https://pkgs.alpinelinux.org/packages?name=php7-mongodb&branch=v3.8
我不能告诉你这个包没有包含在3.9和edge中的原因是什么。但如果这是一个选项,你使用alpine:3.8
作为基本图像而不是alpine:edge