Docker e Laravel: configure: errore: i requisiti del pacchetto (oniguruma) non sono stati soddisfatti


12

Qualcuno può aiutarmi con questo problema.

Quando provo a creare un'immagine docker da un file docker per l'applicazione laravel ottengo questo errore:

verifica di oniguruma ... no configure: errore: i requisiti del pacchetto (oniguruma) non sono stati soddisfatti:

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.

Il comando '/ bin / sh -c docker-php-ext-install pdo mbstring' ha restituito un codice diverso da zero: 1

Ecco il mio Dockerfile:

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

e il comando docker per creare il Dockerfile

sudo docker build -t test .

Risposte:


22

Basta rimuovere mbstringdalle docker-php-ext-installistruzioni.

L'errore è causato da un problema di dipendenza: l' mbstringestensione richiede che la onigurumalibreria faccia funzionare le funzioni di espressione regolare multibyte. Dalla guida all'installazione :

Oniguruma è necessario per le funzioni di espressione regolare con supporto per caratteri multibyte. Oniguruma è in bundle con mbstring. A partire da PHP 5.4.0, se Oniguruma è già installato sul sistema, --with-onig [= DIR] può essere specificato per usare la libreria installata.

Tuttavia, nell'immagine che stai utilizzando, l'estensione è già installata e configurata, quindi non devi fare altro:

$> 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)

Grazie @kalatabe
Amy Murphy il

16

Quello che @kalatabe ha detto è corretto. Ma nel caso in cui volessi assolutamente assicurarti che mbstring venga installato, puoi anche aggiungere libonig-deval tuoapt-get install

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.