Не удается установить php7-mongodb в alpine Linux

#mongodb #docker #dockerfile #alpine

#mongodb #docker #dockerfile #alpine-linux

Вопрос:

Я пытаюсь установить php7-mongodb с помощью моего файла dockerfile. То же самое работало до вчерашнего дня, но сегодня 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

  

Я пробовал с обновлением apk и обновлением apk в dockerfile, но все еще не работает. есть идеи, в чем проблема?

Я использую alpine edge в качестве базовой версии.

Мы можем воссоздать проблему, используя следующий файл dockerfile

 FROM alpine:edge
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update amp;amp; apk upgrade
RUN apk add  php7-mongodb

  

Ответ №1:

tldr: пакет переименован в php7-pecl-mongodb в версии 3.9 и больше не существует в более поздних версиях

Пакет был переименован в php7-pecl-mongodb с помощью этого коммита: https://git.alpinelinux.org/aports/commit/?id=b3d534d73c690baf458d9cda5dca5ee52ca9cafc

Но пакет был удален вскоре после этого из-за изменения пакетом несвободной лицензии: https://git.alpinelinux.org/aports/commit/community/php7-pecl-mongodb/APKBUILD?id=8a901de31fa055ed591d487e12f8bb9ffcc0df21

Ответ №2:

Согласно https://pkgs.alpinelinux.org/packages?name=php7-mongodbamp;branch=edge в версии alpine edge такого пакета нет.

Последняя версия alpine, в репозиториях которой есть php7-mongodb пакет, похоже, 3.8: https://pkgs.alpinelinux.org/packages?name=php7-mongodbamp;branch=v3.8

Я не могу сказать вам, по какой причине этот пакет не содержится в версиях 3.9 и edge. Но если это вариант для вас, используйте alpine:3.8 в качестве базового образа вместо alpine:edge

Ответ №3:

Использование 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, но вы сможете собрать контейнер.