ここではDockerのPHPのイメージへxdebugをインストールすることを試していきます。
PHPイメージの取得
まずは、phpのイメージを取得しておきたいと思います。
公式
公式のイメージは以下に記載されています。
コマンド
コマンドは公式サイトに載っている通り以下を実行します。
docker pull php
実行
コマンドを実行すると以下のようになりました。
$ docker pull php
Using default tag: latest
latest: Pulling from library/php
bc51dd8edc1b: Pull complete
a3224e2c3a89: Pull complete
be7a066df88f: Pull complete
bfdf741d72a9: Pull complete
ff9fc07eebd4: Pull complete
669e424fd246: Pull complete
b2d37f53b7e3: Pull complete
4d87d4b3feb8: Pull complete
d81f0fa01716: Pull complete
Digest: sha256:005e3ccd42cdb97fc609c9732708207f03729822202dab0647168e8f937e7d48
Status: Downloaded newer image for php:latest
docker.io/library/php:latest
$
結果確認
イメージが取得できていることを確認しておきます。
$ docker image ls php
REPOSITORY TAG IMAGE ID CREATED SIZE
php latest 7dc31b4f3403 7 days ago 405MB
$
無事にphpのDockerイメージが取得できました。
手動でインストール
ここでは手動で一つ一つインストールや設定していきます。
コンテナの起動とログイン
まずはコンテナを起動しログインします。コマンドは以下です。
docker run -t -i php:latest /bin/bash
以下は実行例です。
$ docker run -t -i php:latest /bin/bash
root@8c838a47d2f8:/#
xdebugインストール
ログインしたら次はxdebugをインストールをします。コマンドは以下になります。
pecl install xdebug
以下が実行例です。
root@8c838a47d2f8:/# pecl install xdebug
downloading xdebug-2.9.2.tgz ...
Starting to download xdebug-2.9.2.tgz (242,959 bytes)
..................................................done: 242,959 bytes
…(略)…
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.9.2
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" to php.ini
root@8c838a47d2f8:/#
インストール状況確認
xdebugのインストールはできました。ただし、設定を確認してみても分かりますが、この時点ではまだ有効にはなっていません。
root@8c838a47d2f8:/# php -i | grep xdebug
root@8c838a47d2f8:/#
そのため、次はxdebugを有効にします。
xdebugの有効化
xdebugの有効化は「docker-php-ext-enable」で実施できます。
docker-php-ext-enable xdebug
以下は実行例です。
root@8c838a47d2f8:/# docker-php-ext-enable xdebug
root@8c838a47d2f8:/#
xdebugの有効化(手動)
ここでは「docker-php-ext-enable」を使わずにxdebugを有効化していきます。
「docker-php-ext-enable」を使って有効化した人は無視して大丈夫です。あまり使う機会は無いと思いますが、もし「docker-php-ext-enable」が使えない環境があれば使えるかもしれません。
php.ini作成
cd /usr/local/etc/php/
cp php.ini-development php.ini
echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" >> php.ini
公式のphpのイメージだと特に再起動なくphp.iniを作成するだけで良いようです。
「xdebug.so」のパスは上記とは異なる可能性があります。xdebugのインストール時の出力に以下のような行があると思います。このパスを指定してください。
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" to php.ini
xdebugが有効化できたことの確認
再度、設定を確認してみます。
root@8c838a47d2f8:/# php -i | grep xdebug
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
xdebug
xdebug support => enabled
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support
…(略)…
有効化できていることが確認できました。
Dockerfileでインストール
ここではDockerfileを使ってインストールしていきます。と言ってもほぼファイルを用意するだけです。
Dockerfile作成
Dockerfileを作成します。今回は以下のようなファイルを用意しました。
FROM php:7.4.2
RUN pecl install xdebug-2.9.1 && docker-php-ext-enable xdebug
phpとxdebugのバージョンの組み合わせでインストールが失敗することがあるので、上記はバージョンを固定していますが、最新のバージョンで大丈夫です。
ビルドコマンド実行
以下のコマンドでDockerfileをビルドします。
docker build -t {イメージ名} {Dockerfileのディレクトリ}
実際に実行した結果が以下です。
$ docker build -t my-php .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM php:7.4.2
---> 7dc31b4f3403
Step 2/2 : RUN pecl install xdebug-2.9.1 && docker-php-ext-enable xdebug
---> Running in ee624f50b545
downloading xdebug-2.9.1.tgz ...
Starting to download xdebug-2.9.1.tgz (243,652 bytes)
..................................................done: 243,652 bytes
…(略)…
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.9.1
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" to php.ini
Removing intermediate container ee624f50b545
---> 11cec75800dd
Successfully built 11cec75800dd
Successfully tagged my-php:latest
$
イメージが作成されました。
$ docker image ls my-php
REPOSITORY TAG IMAGE ID CREATED SIZE
my-php latest 11cec75800dd 8 minutes ago 408MB
$
作成したイメージからコンテナ起動
先ほど作成したカスタムイメージを起動してログインします。
$ docker run -it my-php:latest /bin/bash
root@eceba8436bbb:/#
xdebugの状態確認
作成したカスタムイメージの設定を確認してみます。
root@eceba8436bbb:/# php -i | grep xdebug
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
xdebug
xdebug support => enabled
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support
…(略)…
きちんとxdebugの設定が有効になっていることが確認できました。
コメント