Docker & Laravel: configure: error: Wymagania dotyczące pakietu (oniguruma) nie zostały spełnione

12

Czy ktoś może mi pomóc z tym problemem.

Gdy próbuję utworzyć obraz dokera z pliku dokowania dla aplikacji laravel, pojawia się ten błąd:

sprawdzanie oniguruma ... brak konfiguracji: błąd: Wymagania pakietu (oniguruma) nie zostały spełnione:

No package 'oniguruma' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ONIG_CFLAGS
and ONIG_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Polecenie „/ bin / sh -c docker-php-ext-install pdo mbstring” zwróciło kod niezerowy: 1

Oto mój plik Docker:

FROM php:7
RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo mbstring
WORKDIR /app
COPY app /app # this copies all the app files to a folder called `app`
RUN composer install

CMD php artisan serve --host=0.0.0.0 --port=8000
EXPOSE 8000

oraz polecenie dokera, aby zbudować plik Docker

sudo docker build -t test .
Amy Murphy
źródło

Odpowiedzi:

22

Po prostu usuń mbstringzdocker-php-ext-install instrukcji.

Błąd jest spowodowany problemem zależności - mbstringrozszerzenie wymaga, aby onigurumabiblioteka działała z wielobajtowymi funkcjami wyrażeń regularnych. Z przewodnika instalacji :

Oniguruma jest niezbędny do wykonywania funkcji wyrażeń regularnych z obsługą znaków wielobajtowych. Oniguruma jest w pakiecie z mbstring. Począwszy od PHP 5.4.0, jeśli Oniguruma jest już zainstalowany w systemie, można określić opcję --with-onig [= DIR], aby użyć zainstalowanej biblioteki.

Jednak na obrazie, którego używasz, rozszerzenie jest już zainstalowane i skonfigurowane, więc nie musisz nic więcej robić:

$> docker run --rm -it php:7 php -r "var_dump(mb_ereg_match('^99.*', '123456'));"                                                                                      
bool(false)

$> docker run --rm -it php:7 php -r "var_dump(mb_ereg_match('^12.*', '123456'));"                                                                                      
bool(true)
kalatabe
źródło
Dzięki @kalatabe
Amy Murphy,
16

To, co powiedział @kalatabe, jest poprawne. Ale jeśli absolutnie chcesz się upewnić, że mbstring zostanie zainstalowany, możesz również dodać libonig-devdo swojegoapt-get install

kgx
źródło