PHP アプリケーションのコンテナー化

前提条件

  • Docker Desktop の最新バージョンをインストールしていること。
  • git クライアント が利用可能であること。 本節の利用例ではコマンドラインベースの git クライアントを用いていきますが、別のクライアントを用いてもかまいません。

概要

本節では PHP アプリケーションをコンテナー化して実行する手順を示していきます。

サンプルアプリケーションの入手

このガイドでは、あらかじめビルドされている PHP アプリケーションを使っていきます。 このアプリケーションは依存パッケージの管理に Composer を使っています。 アプリケーションは Apache ウェブサーバーを使って提供されます。

端末画面を開いて、作業を行うディレクトリに移動します。 そして以下のコマンドを実行してリポジトリをクローンします。

$ git clone https://github.com/docker/docker-php-sample

サンプルアプリケーションは単純な hello world アプリケーションです。 そしてデータベース内に保存しているカウンターを加算します。 またテスト実行のため PHPUnit を用いています。

Docker アセットの初期化

アプリケーションを入手できたので、アプリケーションのコンテナー化に向けて docker init を実行し、必要な Docker アセットを生成します。 端末上から docker-php-sample ディレクトリに移動して docker init コマンドを実行します。 docker init はデフォルトの設定を生成していくものであり、アプリケーションに対する質問が出されるのでこれに答えていきます。 たとえばこのアプリケーションは PHP バージョン 8.2 を使っています。 以下の例における docker init への回答プロンプトを参考にして、同様の回答を行ってください。

$ docker init
Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml
  - README.Docker.md

Let's get started!

? What application platform does your project use? PHP with Apache
? What version of PHP do you want to use? 8.2
? What's the relative directory (with a leading .) for your app? ./src
? What local port do you want to use to access your server? 9000

上により docker-php-sample ディレクトリ内は以下の内容となるはずです。

├── docker-php-sample/
│ ├── .git/
│ ├── src/
│ ├── tests/
│ ├── .dockerignore
│ ├── .gitignore
│ ├── compose.yaml
│ ├── composer.json
│ ├── composer.lock
│ ├── Dockerfile
│ ├── README.Docker.md
│ └── README.md

docker init が追加した各ファイルについての詳細は以下を参照してください。

アプリケーションの実行

端末画面内の docker-php-sample ディレクトリから以下のコマンドを実行します。

$ docker compose up --build

ブラウザーを開いて http://localhost:9000/hello.php にアクセスしてアプリケーションを確認します。 単純な hello world アプリケーションが表示されたはずです。

端末画面から ctrl+c を押下してアプリケーションを停止します。

バックグラウンドでのアプリケーション実行

アプリケーションは端末から切り離して実行することができます。 それには -d オプションをつけます。 端末画面内の docker-php-sample ディレクトリから以下のコマンドを実行します。

$ docker compose up --build -d

ブラウザーを開いて http://localhost:9000/hello.php にアクセスしてアプリケーションを確認します。 単純な hello world アプリケーションが表示されたはずです。

端末画面から以下のコマンドを実行してアプリケーションを停止します。

$ docker compose down

Compose コマンドの詳細は Compose CLI リファレンス を参照してください。

まとめ

本節では Docker を使って、単純な PHP アプリケーションをコンテナー化して実行する方法について学びました。

関連情報

次のステップ

次の節では、Docker コンテナーを使ってアプリケーションの開発を行う方法を学びます。