Docker & Laravel: configure: error: Yêu cầu gói (oniguruma) không được đáp ứng


12

Bất cứ ai có thể giúp tôi với vấn đề này.

Khi tôi cố gắng tạo một hình ảnh docker từ một dockerfile cho ứng dụng laravel tôi gặp lỗi này:

kiểm tra oniguruma ... không có cấu hình: lỗi: Yêu cầu gói (oniguruma) không được đáp ứng:

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.

Lệnh '/ bin / sh -c docker-php-ext-install pdo mbopes' đã trả về một mã khác không: 1

Đây là Dockerfile của tôi:

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

và lệnh docker để xây dựng Dockerfile

sudo docker build -t test .

Câu trả lời:


22

Chỉ cần loại bỏ mbstringkhỏi docker-php-ext-installhướng dẫn.

Lỗi được gây ra bởi một vấn đề phụ thuộc - mbstringphần mở rộng yêu cầu onigurumathư viện làm cho các hàm biểu thức chính quy đa nhân hoạt động. Từ hướng dẫn cài đặt :

Oniguruma là cần thiết cho các chức năng biểu hiện thông thường với sự hỗ trợ nhân vật đa bào. Oniguruma được gói với mbopes. Kể từ phiên bản PHP 5.4.0, nếu Oniguruma đã được cài đặt trên hệ thống, --with-onig [= DIR] có thể được chỉ định để sử dụng thư viện đã cài đặt.

Tuy nhiên, trong hình ảnh bạn đang sử dụng, tiện ích mở rộng đã được cài đặt và định cấu hình, do đó bạn không cần phải làm gì khác:

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

Cảm ơn @kalatabe
Amy Murphy

16

Những gì @kalatabe nói là chính xác. Nhưng trong trường hợp bạn hoàn toàn muốn đảm bảo mbopes được cài đặt, bạn cũng có thể thêm libonig-devvàoapt-get install

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.