誰でもこの問題で私を助けることができますか?.
laravelアプリケーションのdockerfileからdockerイメージを作成しようとすると、次のエラーが発生します。
onigurumaをチェックしています... no configure:エラー:パッケージ要件(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
dockerfileをビルドするdockerコマンド
Sudo docker build -t test .
docker-php-ext-install
命令からmbstring
を削除するだけです。
このエラーは依存関係の問題が原因で発生します。mbstring
拡張機能では、マルチバイト正規表現関数を機能させるためにoniguruma
ライブラリが必要です。 インストールガイド から:
マルチバイト文字をサポートする正規表現関数には、鬼車が必要です。鬼車にはmbstringが同梱されています。 PHP 5.4.0以降、オニグルマがすでにシステムにインストールされている場合は、-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)
@カラタベが言ったことは正しい。ただし、mbstringを確実にインストールしたい場合は、libonig-dev
をapt-get install
に追加することもできます。