dockerにphp拡張子をインストールする
5007 ワード
phpが持ついくつかの拡張
Dockerfileファイルでキーワードdocker-php-ext-installを直接使用
peclの拡張
このサイトではhttps://pecl.php.netの拡張はpecl installインストール、例えばredis swooleなどの拡張を使用できます.このコマンドを使用してインストールするときは、ミラーにpeclコマンドがあるかどうか、ない場合はインストールに注意する必要があります.
pecl install後はこのhttps://pecl.php.netをダウンロードしてインストールするので、以下の方法も可能です.
インストールパッケージのインストール拡張機能のダウンロード
ある拡張は上の2つの方法ではないか、ソースコードでインストールしたい場合は、この方法を使用することができます.実は上の2つの方法の本質もダウンロードインストールの方法なので、phpizeなどのコマンドが存在するかどうかも確認し、phpizeを構成する環境変数がなければ、フルパスを書かなければなりません.makeコマンドをインストールするかどうかも確認します
以下はswoftダウンロードswoole拡張インストール方法です
以下はphp公式サイトのダウンロード拡張方法です
より詳細な使い方はdocker phpミラーを参照してください.この方法を使用するには、以下の点に注意する必要があります. RUNの最後のコマンドにスラッシュを付けないでください.そうしないと、次の のようにエラーが発生します.ダウンロードしたパッケージの接尾辞と解凍した後の最も必ず同じで、さもなくば解凍する時 を間違えます wgetの最初のステップパラメータは-Oであり、-oではなく、大文字です.docker hupでは が間違っています
に質問問題1
ソリューション、autoconfをインストールします.centosはyum、unbantuはapt-get、alpineはapk問題2./configureでno acceptable C compiler found in$PATH をエラーしました.
解決方法は;gccを取り付ける問題3同様に./configureでエラーが発生しました.C compiler cannot create executables
dockerのalpineミラーを使用しているので、解決方法は以下の通りです.
以上の3つの問題は、redis拡張子をインストールするときに遭遇したものです.Dockerfileは次のようになります.
Dockerfileファイルでキーワードdocker-php-ext-installを直接使用
RUN docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install sockets \
&& docker-php-ext-install zip \
&& docker-php-ext-install sysvmsg
peclの拡張
このサイトではhttps://pecl.php.netの拡張はpecl installインストール、例えばredis swooleなどの拡張を使用できます.このコマンドを使用してインストールするときは、ミラーにpeclコマンドがあるかどうか、ない場合はインストールに注意する必要があります.
RUN pecl install swoole-4.2.12 \
&& docker-php-ext-enable swoole \
&& pecl install inotify-2.0.0 \
&& docker-php-ext-enable inotify
pecl install後はこのhttps://pecl.php.netをダウンロードしてインストールするので、以下の方法も可能です.
RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \
&& pecl install /tmp/redis.tar.tgz \
&& rm -rf /tmp/redis.tar.tgz \
&& docker-php-ext-enable redis
インストールパッケージのインストール拡張機能のダウンロード
ある拡張は上の2つの方法ではないか、ソースコードでインストールしたい場合は、この方法を使用することができます.実は上の2つの方法の本質もダウンロードインストールの方法なので、phpizeなどのコマンドが存在するかどうかも確認し、phpizeを構成する環境変数がなければ、フルパスを書かなければなりません.makeコマンドをインストールするかどうかも確認します
以下はswoftダウンロードswoole拡張インストール方法です
RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \
&& mkdir -p swoole \
&& tar -xf swoole.tar.gz -C swoole --strip-components=1 \
&& rm swoole.tar.gz \
&& ( \
cd swoole \
&& phpize \
&& ./configure --enable-mysqlnd --enable-sockets --enable-openssl --enable-http2 \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r swoole \
&& docker-php-ext-enable swoole
以下はphp公式サイトのダウンロード拡張方法です
FROM php:5.6-cli
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -O xcache.tar.gz \
&& mkdir -p xcache \
&& tar -xf xcache.tar.gz -C xcache --strip-components=1 \
&& rm xcache.tar.gz \
&& ( \
cd xcache \
&& phpize \
&& ./configure --enable-xcache \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r xcache \
&& docker-php-ext-enable xcache
より詳細な使い方はdocker phpミラーを参照してください.この方法を使用するには、以下の点に注意する必要があります.
&& docker-php-ext-enable xcache \
に質問
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
ERROR: `phpize' failed
ソリューション、autoconfをインストールします.centosはyum、unbantuはapt-get、alpineはapk
RUN apk update \
&& apk add autoconf \
&& docker-php-ext-install pcntl \
&& pecl install redis-5.0.0 \
&& docker-php-ext-enable redis
COPY . /var/www/html
COPY ./docker/nginx-php7/sites-enabled /etc/nginx/sites-enabled
configure: error: in `/var/www/html/redis':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
解決方法は;gccを取り付ける
apk add gcc
configure: error: in `/var/www/html/redis':
configure: error: C compiler cannot create executables
See `config.log' for more details
dockerのalpineミラーを使用しているので、解決方法は以下の通りです.
apk add gcc g++
以上の3つの問題は、redis拡張子をインストールするときに遭遇したものです.Dockerfileは次のようになります.
FROM richarvey/nginx-php-fpm:latest
RUN apk update \
&& apk add autoconf \
&& apk add gcc g++\
&& apk add make \
&& docker-php-ext-install pcntl \
&& wget https://pecl.php.net/get/redis-5.0.1.tgz -O redis.tgz \
&& mkdir -p redis \
&& tar -xf redis.tgz -C redis --strip-components=1 \
&& rm redis.tgz \
&& ( \
cd redis \
&& phpize \
&& ./configure --with-php-config=/usr/local/bin/php-config \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r redis \
&& docker-php-ext-enable redis
COPY . /var/www/html
COPY ./docker/nginx-php7/sites-enabled /etc/nginx/sites-enabled