Docker & Laravel: configure: error: No se cumplieron los requisitos del paquete (oniguruma)

12

Puede alguien ayudarme con este problema.

Cuando intento crear una imagen acoplable desde un dockerfile para la aplicación laravel, aparece este error:

buscando oniguruma ... sin configurar: error: No se cumplieron los requisitos del paquete (oniguruma):

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.

El comando '/ bin / sh -c docker-php-ext-install pdo mbstring' devolvió un código distinto de cero: 1

Aquí está mi 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

y el comando docker para construir el Dockerfile

sudo docker build -t test .
Amy Murphy
fuente

Respuestas:

22

Simplemente elimine mbstringde las docker-php-ext-installinstrucciones.

El error es causado por un problema de dependencia: la mbstringextensión requiere que la onigurumabiblioteca haga funcionar las funciones de expresión regular multibyte. De la guía de instalación :

Oniguruma es necesario para las funciones de expresión regular con soporte de caracteres multibyte. Oniguruma está incluido con mbstring. A partir de PHP 5.4.0, si Oniguruma ya está instalado en el sistema, se puede especificar --with-onig [= DIR] para usar la biblioteca instalada.

Sin embargo, en la imagen que está utilizando, la extensión ya está instalada y configurada, por lo que no necesita hacer nada más:

$> 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
fuente
Gracias @kalatabe
Amy Murphy
16

Lo que @kalatabe dijo es correcto. Pero en caso de que quiera asegurarse de que se instala mbstring, también puede agregar libonig-deva suapt-get install

kgx
fuente