Docker & Laravel: configure: error: ข้อกำหนดของแพคเกจ (oniguruma) ไม่เป็นไปตาม


12

ทุกคนสามารถช่วยฉันด้วยปัญหานี้

เมื่อฉันพยายามสร้างภาพนักเทียบท่าจาก dockerfile สำหรับแอปพลิเคชัน laravel ฉันได้รับข้อผิดพลาดนี้:

กำลังตรวจสอบสำหรับ oniguruma ... ไม่มีการกำหนดค่า: ข้อผิดพลาด: ไม่ตรงตามข้อกำหนดของแพ็คเกจ (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.

คำสั่ง '/ bin / sh -c docker-php-ext-install pdo mbstring' ส่งคืนโค้ดที่ไม่เป็นศูนย์: 1

นี่คือ 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

และคำสั่ง docker เพื่อสร้าง Dockerfile

sudo docker build -t test .

คำตอบ:


22

เพียงลบออกmbstringจากdocker-php-ext-installคำแนะนำ

ข้อผิดพลาดเกิดจากปัญหาการพึ่งพา - mbstringส่วนขยายต้องการonigurumaไลบรารีเพื่อให้ฟังก์ชันนิพจน์ทั่วไปหลายไบต์ทำงานได้ จากคู่มือการติดตั้ง :

Oniguruma จำเป็นสำหรับฟังก์ชั่นการแสดงออกปกติด้วยการสนับสนุนอักขระหลายไบต์ Oniguruma มาพร้อมกับ mbstring ตั้งแต่ PHP 5.4.0 หากติดตั้ง Oniguruma ไว้ในระบบสามารถระบุ --with-onig [= DIR] เพื่อใช้ไลบรารีที่ติดตั้ง

อย่างไรก็ตามในภาพที่คุณใช้ส่วนขยายได้รับการติดตั้งและกำหนดค่าไว้แล้วดังนั้นคุณไม่จำเป็นต้องทำสิ่งใดเลย:

$> 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
Amy Murphy

16

สิ่งที่ kalatabe พูดถูกต้อง แต่ในกรณีที่คุณต้องการทำให้แน่ใจว่า mbstring ได้รับการติดตั้งคุณสามารถเพิ่มลงlibonig-devในของคุณได้apt-get install

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.