platform docker

DockerでPHPをCLIで実行できる環境を構築します。

環境

  • Ubuntu 22.04.3 LTS (WSLで起動している)
  • Docker Engine 26.0.0

前提

  • Dockerをインストールしている。
    WindowsでのDoker Engineのインストールについてはこちらをご覧ください。

環境構築の流れ

  1. PHPファイルを作成する。
  2. PHPコンテナを立ち上げる。
  3. PHPファイルを実行する。

1. PHPファイルを作成する

実行するPHPのファイルを作成します。
以下を実行して”Hello World”を出力する sample.php を作成します。

$ echo '<?php echo "Hello World" . PHP_EOL;' > sample.php

ファイルの中身は以下の通りです。

<?php echo "Hello World" . PHP_EOL;

2. PHPコンテナを立ち上げる

作成したPHPファイルがあるディレクトリに移動します。
以下を実行します。

$ docker run -it --rm --name php-cli -w /app -v `pwd`:/app php:8.2-cli bash

php:8.2-cli のイメージから php-cli という名前のDockerコンテナを立ち上げ、bash コマンドでコンテナに接続しています。コンテナ名は任意です。(docker run コマンドについて)

3. PHPファイルを実行する

PHPコンテナに接続した状態で以下を実行します。
PHPファイルがあるディレクトリをPHPコンテナ内の /app ディレクトリにマウントしてるので、/app 以下に sample.php があるはずです。

/app# php sample.php
Hello World

作成したPHPファイルを実行できました。
exit コマンドでコンテナとの接続を切ると、docker run コマンドの rm オプションの効果でコンテナが削除されます。

/app# exit
exit
$ docker ps -a # コンテナは削除されたため表示されない
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

再びコンテナを作成し、PHPファイルを実行したい場合は手順2からやり直してください。

PHPコンテナを立ち上げるタイミングでPHPファイルを実行する

PHPコンテナを立ち上げるタイミングでPHPファイルを実行する場合は、手順2で実行した docker run コマンドの bashphp sample.php に変更して実行します。

$ docker run -it --rm --name php-cli -w /app -v `pwd`:/app php:8.2-cli php sample.php
Hello World

コンテナ起動時に bash コマンドを実行する代わりに php sample.php を実行します。

PHPファイルを作成せずにPHPを実行する

PHPファイルを作成せずにPHPを実行する場合は、手順1を行わず、手順2で実行した docker run コマンドの bashphp -r "echo 'Hello World' . PHP_EOL;" に変更して実行します。

$ docker run -it --rm --name php-cli -w /app -v `pwd`:/app php:8.2-cli php -r "echo 'Hello World' . PHP_EOL;"
Hello World

コンテナ起動時に bash コマンドを実行する代わりに php -r "echo 'Hello World' . PHP_EOL;" を実行します。
php コマンドの r オプションで、コマンドラインのみでPHPを実行できます。