Docker & Laravel: configure: error: Persyaratan paket (oniguruma) tidak terpenuhi

12

Adakah yang bisa membantu saya dengan masalah ini.

Ketika saya mencoba membuat gambar buruh pelabuhan dari dockerfile untuk aplikasi laravel saya mendapatkan kesalahan ini:

memeriksa oniguruma ... tidak ada konfigurasi: kesalahan: Persyaratan paket (oniguruma) tidak terpenuhi:

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.

Perintah '/ bin / sh -c docker-php-ext-install pdo mbstring' mengembalikan kode bukan nol: 1

Ini Dockerfile saya:

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

dan perintah buruh pelabuhan untuk membangun Dockerfile

sudo docker build -t test .
Amy Murphy
sumber

Jawaban:

22

Hapus saja mbstringdari docker-php-ext-installinstruksi.

Kesalahan ini disebabkan oleh masalah dependensi - mbstringekstensi memerlukan onigurumaperpustakaan untuk membuat fungsi ekspresi reguler multibyte berfungsi. Dari panduan instalasi :

Oniguruma diperlukan untuk fungsi ekspresi reguler dengan dukungan karakter multibyte. Oniguruma dibundel dengan mbstring. Pada PHP 5.4.0, jika Oniguruma sudah diinstal pada sistem, --with-onig [= DIR] dapat ditentukan untuk menggunakan pustaka yang diinstal.

Namun, pada gambar yang Anda gunakan, ekstensi sudah diinstal dan dikonfigurasikan, jadi Anda tidak perlu melakukan hal lain:

$> 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
sumber
Terima kasih @kalatabe
Amy Murphy
16

Apa yang @kalatabe katakan benar. Tetapi jika Anda benar-benar ingin memastikan mbstring terinstal, Anda juga dapat menambahkannya libonig-devkeapt-get install

kgx
sumber