Docker & Laravel: configure: error: os requisitos do pacote (oniguruma) não foram atendidos

12

Alguém pode me ajudar com este problema.

Quando tento criar uma imagem do docker a partir de um dockerfile para o aplicativo laravel, recebo este erro:

verificando oniguruma ... no configure: error: Os requisitos do pacote (oniguruma) não foram atendidos:

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.

O comando '/ bin / sh -c docker-php-ext-install pdo mbstring' retornou um código diferente de zero: 1

Aqui está o meu 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 o comando docker para criar o Dockerfile

sudo docker build -t test .
Amy Murphy
fonte

Respostas:

22

Basta remover mbstringda docker-php-ext-installinstrução.

O erro é causado por um problema de dependência - a mbstringextensão requer que a onigurumabiblioteca faça com que as funções de expressão regular de vários bytes funcionem. No guia de instalação :

Oniguruma é necessário para as funções de expressão regular com suporte a caracteres multibyte. O Oniguruma é fornecido com o mbstring. A partir do PHP 5.4.0, se o Oniguruma já estiver instalado no sistema, --with-onig [= DIR] pode ser especificado para usar a biblioteca instalada.

No entanto, na imagem que você está usando, a extensão já está instalada e configurada, para que você não precise fazer mais nada:

$> 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
fonte
Graças @kalatabe
Amy Murphy
16

O que o @kalatabe disse está correto. Mas caso você queira ter certeza de que o mbstring seja instalado, você também pode adicionar libonig-devao seuapt-get install

kgx
fonte