ОШИБКА: невыполнимые ограничения - на php: 7-fpm-alpine

Я смотрю на настройку laravel в контейнере fpm-alpine. Столкнулся с проблемой, когда приведенный ниже Dockerfile выдает некоторые ошибки...

FROM php:7-fpm-alpine

# install extensions needed for Laravel
RUN apk --update add \
  php7-mysqli \
  php7-mcrypt \
  php7-mbstring \
  rm /var/cache/apk/*

Выдаются следующие ошибки:

Building fpm
Step 1 : FROM php:7-fpm-alpine
 ---> 9e6811cb8bac
Step 2 : RUN apk --update add   php7-mysqli   php7-mcrypt   php7-mbstring   rm /var/cache/apk/*
 ---> Running in 87364957eb57
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  /var/cache/apk/* (missing):
    required by: world[/var/cache/apk/*]
  php7-mbstring (missing):
    required by: world[php7-mbstring]
  php7-mcrypt (missing):
    required by: world[php7-mcrypt]
  php7-mysqli (missing):
    required by: world[php7-mysqli]
  rm (missing):
    required by: world[rm]
ERROR: Service 'fpm' failed to build: The command '/bin/sh -c apk --update add   php7-mysqli   php7-mcrypt   php7-mbstring   rm /var/cache/apk/*' returned a non-zero code: 5

Я могу искать эти имена пакетов и найти их на веб-сайте alpine linux. Любые мысли о том, как я могу обойти это? Как будто он не обновляет кеш apt... но добавляя LS, я вижу там содержимое:

Building fpm
Step 1 : FROM php:7-fpm-alpine
 ---> 9e6811cb8bac
Step 2 : RUN apk update
 ---> Using cache
 ---> 9ef09f3aa2a2
Step 3 : RUN ls /var/cache/apk
 ---> Running in e126a083a306
APKINDEX.5a59b88b.tar.gz
APKINDEX.7c1f02d6.tar.gz

Любые идеи о том, что я могу сделать, чтобы решить эту проблему?


person Webnet    schedule 10.04.2016    source источник


Ответы (4)


Базовый образ Docker, вероятно, ссылается на неправильный репозиторий.

Передайте правильные репозитории команде apk add следующим образом:

RUN apk add --update \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
php7-mysqli php7-mcrypt php7-mbstring
person medve    schedule 07.10.2016

Я не использовал docker-php-ext-install, который требуется при добавлении работы в контейнер...

FROM php:7-fpm-alpine

# install extensions needed for Laravel
RUN apk update \
    && apk add libmcrypt-dev \
    && docker-php-ext-install mcrypt mysqli pdo_mysql \
    && rm /var/cache/apk/*
person Webnet    schedule 10.04.2016
comment
Это действительно работает? Похоже, что для компиляции некоторых из этих расширений могут потребоваться пакеты разработки (такие как libmcrypt-dev). - person Andy Shinn; 10.04.2016
comment
Да действительно так - person Webnet; 11.04.2016

Я встретил ту же ошибку. Решил это, удалив версию пакета из его имени:

https://github.com/docker-library/php/issues/225#issuecomment-220339154

person Freeman L    schedule 27.08.2019
comment
Блестящий. Работал как угощение. - person Matthew Setter; 14.01.2021

Я встретил ту же ошибку и попробовал решение здесь, обнаружил, что apk update имеет решающее значение.

person Jeff Tian    schedule 27.03.2019