インストール・環境構築

PHPとDockerを使った開発環境の構築方法について解説

PHPとDockerの組み合わせで、開発環境の構築がより手軽になります。

Dockerを使うと、アプリケーションの依存関係管理が容易になり、環境間の差異を減らすことが期待できます。

この記事では、Dockerfileの基本設定やPHPアプリケーションの動作確認方法など、具体的な手順を分かりやすく解説します。

Dockerfileの設定

PHP環境の基盤設定では、PHPのバージョン指定や必要な拡張モジュールの追加を行います。

Dockerfile内で適切な命令を使うことで、開発環境を簡単に再現できるように整えます。

PHP環境の基盤設定

PHPバージョンの指定

PHPのバージョンを固定することで、ローカル環境と本番環境で同一の動作を保証できます。

例えば、以下のようにFROM命令を使ってphp:7.4-fpmイメージを利用する方法があります。

# 使用するPHPのバージョンを指定

FROM php:7.4-fpm
# Dockerビルド実行時に、php:7.4-fpmイメージの取得が始まる

拡張モジュールの追加

PHPでは必要な拡張モジュールを追加することで、アプリケーションの機能を拡張できます。

docker-php-ext-installを使用して、MySQLやGDなどの拡張をインストールする例です。

以下のサンプルコードは、MySQL接続用のpdo_mysql拡張モジュールを追加する方法を示しています。

# PHP拡張モジュール(pdo_mysql)をインストール

RUN docker-php-ext-install pdo_mysql
# pdo_mysqlモジュールが有効化され、PHPに追加される

イメージのカスタマイズ

Dockerfile内で、ベースイメージの選定や環境変数の設定を行うことで、より柔軟に環境をカスタマイズできます。

ベースイメージの選定

利用するベースイメージは、プロジェクトで必要な機能やパフォーマンスに合わせて選択します。

例えば、FPM版を利用して高速なリクエスト処理を実現する場合、php:7.4-fpmイメージが適しています。

必要に応じて、Alpine Linuxベースのコンパクトなイメージを選ぶこともできます。

# PHP FPM版のイメージを使用(Alpine版)

FROM php:7.4-fpm-alpine
# php:7.4-fpm-alpineイメージの取得が行われる

環境変数の設定

環境変数を設定することで、コンテナ内の動作を柔軟に調整可能です。

ENV命令を使用し、設定値をコード上で扱いやすくすることができます。

以下は、アプリケーションの設定値やデバッグモードの切り替えに利用する例です。

# PHPの実行環境向けの環境変数を設定

ENV APP_ENV=development
ENV DISPLAY_ERRORS=On
# コンテナ起動後、APP_ENVとDISPLAY_ERRORSの値が環境変数として利用可能になる

docker-compose.ymlの設定

docker-compose.ymlでは、複数のコンテナの連携やリソースの同期など、サービス全体としての動作を管理しやすくなります。

ここではサービス定義とリソース同期の調整について説明します。

サービス定義の調整

docker-compose.ymlファイル内で個別サービスの設定を行うことで、PHPコンテナとその他のサービス間の連携を取ることができます。

PHPコンテナの設定

PHPコンテナの設定では、Dockerfileで作成したPHP環境をベースに、必要なポートの公開、ボリュームのマウント、環境変数の設定を行います。

以下は基本的な設定例です。

version: "3.8"
services:
  php:
    build: .
    container_name: php_container
    ports:

      - "9000:9000"

    volumes:

      - ./src:/var/www/html

    environment:

      - APP_ENV=development  # 環境変数を上書きできる
# php_containerが9000番ポートで起動し、ローカルのsrcディレクトリがコンテナ内の/var/www/htmlにマウントされる

他サービスとの連携

PHPアプリケーションは、データベースやキャッシュサービスと連携することが多いため、docker-compose.ymlでそれらのサービスの定義を追加します。

以下は、データベースコンテナと連携するサンプル設定です。

version: "3.8"
services:
  php:
    build: .
    container_name: php_container
    ports:

      - "9000:9000"

    volumes:

      - ./src:/var/www/html

    depends_on:

      - db

  db:
    image: mysql:5.7
    container_name: mysql_container
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: sample_db
# phpコンテナはdbコンテナ(MySQL)に依存し、連携して動作する

リソース同期の設定

リソース同期の設定では、ホストとコンテナ間でファイルやネットワークの設定を連携させる方法について説明します。

ボリュームの指定

ボリュームを設定することで、ホストのソースコードなどのリソースをコンテナに同期でき、変更がすぐに反映されます。

たとえば、以下の例のようにボリュームをマウントする設定が有効です。

services:
  php:
    volumes:

      - ./src:/var/www/html  # ホストのsrcディレクトリと同期
# ソースコードがコンテナ内の/var/www/htmlにマウントされ、編集内容がリアルタイムで反映される

ネットワーク構成の調整

ネットワーク設定は、複数コンテナ間の通信を管理しやすくするために重要です。

docker-compose.ymlでは、デフォルトネットワークが作成されますが、必要に応じて明示的に設定を行うことができます。

以下は、カスタムネットワークを設定する例です。

version: "3.8"
services:
  php:
    networks:

      - app-network

  db:
    networks:

      - app-network

networks:
  app-network:
    driver: bridge
# phpとdbの両コンテナがapp-networkというカスタムブリッジネットワーク上で動作する

PHPコンテナの管理

PHPコンテナの管理では、起動・停止の操作やコンテナ再構築、パフォーマンスの調整方法について記述します。

効率的な管理が開発をスムーズに進めるために役立ちます。

コンテナの起動・停止操作

コンテナの起動や停止は、docker-composeコマンドを使用して行います。

基本動作を理解しておくことで、環境の管理が容易になります。

操作コマンド

基本的な起動・停止コマンドは以下の通りです。

# コンテナの起動

docker-compose up -d

# コンテナの停止

docker-compose down
# docker-compose up -d実行時に、バックグラウンドでコンテナが起動する

# docker-compose down実行時に、コンテナが停止される

再構築手順

Dockerfileやdocker-compose.ymlに変更があった場合、コンテナを再構築する必要があります。

以下のコマンドは、キャッシュを無視して再構築する手順です。

# キャッシュを無視して再構築

docker-compose build --no-cache

# 再構築後、コンテナを再起動

docker-compose up -d
# コマンド実行後、全サービスが最新の設定で再起動される

パフォーマンス調整

PHPコンテナのパフォーマンスを向上させるために、キャッシュ設定やログ出力の調整を行います。

適切な設定により、開発中の問題検出やレスポンス改善が期待できます。

キャッシュ設定の調整

PHPでは、Opcodeキャッシュなどを利用することでコードの実行速度が向上します。

以下は、opcacheの設定例を含むサンプルです。

設定ファイル内でキャッシュのサイズやタイミングを調整できます。

# opcache設定を追加するためのサンプル

RUN echo "opcache.memory_consumption=128" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini && \
    echo "opcache.validate_timestamps=1" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
# opcacheの設定がPHPの構成に反映され、パフォーマンスが向上する

ログ出力の取得

ログ出力の設定により、エラーや挙動を確認しやすくなります。

php.iniでエラー表示やログファイルのパスを指定する方法を紹介します。

# エラー表示およびログ出力設定の追加

RUN echo "display_errors=On" >> /usr/local/etc/php/conf.d/error.ini && \
    echo "error_log=/var/log/php_error.log" >> /usr/local/etc/php/conf.d/error.ini
# エラーがコンソールと指定ファイルに記録され、トラブルシューティングが容易になる

まとめ

この記事では、Dockerfileおよびdocker-compose.ymlを用いたPHP環境構築とコンテナ管理の手法を整理・説明しました。

各設定項目や操作コマンド、パフォーマンス調整のポイントが簡潔に整理され、全体の流れが把握できる内容となっています。

ぜひ、この記事を参考に実プロジェクトに導入し、開発環境の改善へ積極的に取り組んでください。

Back to top button
目次へ