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