PHP

Dockerで簡単なPHP開発環境構築ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

DockerによるPHP開発環境構築の概要

Dockerを活用すれば、PHP開発環境のセットアップにかかる時間やバージョン管理の複雑さを大幅に軽減できます。本記事では、DockerとDocker Composeを使用して最小限の設定でPHP開発環境を構築する手順をステップバイステップで解説します。初心者でも簡単に導入できるよう、コピペ可能なコード例も提供しています。


事前準備:Docker/Docker Composeのインストール確認

Docker環境を整える際には、まずDockerとDocker Composeが正常に動作しているか確認することが重要です。OSごとに手順が異なるため、自分の環境に合わせて実施してください。

OSごとの確認手順

以下は各OSでのDockerのインストール・起動状態の確認方法です。

OS 手順概要 確認コマンド
Windows Docker Desktop for Windowsをインストールし、「Docker Engine」と「Docker Compose」が有効か確認 docker --version
docker-compose --version
macOS Homebrew経由でDockerをインストール。アプリ起動時に状態を確認 同上
Linux(Ubuntu例) apt-get install -y docker.io docker-compose でインストール 同上

注意: Dockerデーモンの権限設定やホスト側のディレクトリパーミッションが不適切な場合、コンテナ起動時にエラーが発生する可能性があります。


PHP-FPMとNginxコンテナの構築

PHP開発環境の核となるのはphp-fpm(FastCGI Process Manager)Nginx(ウェブサーバー)です。ここでは、最小限の設定でこれらを起動する方法を解説します。

docker-compose.ymlファイルの作成

以下のコード例をdocker-compose.ymlとして保存してください。プロジェクトルートに配置し、コマンド一括で環境構築できます。

パーミッションの注意点

コンテナ起動時に「Permission denied」エラーが発生する場合、ホスト側ディレクトリのパーミッションが原因です。以下を推奨します:

  1. Dockerデーモンの権限設定を変更(/etc/docker/daemon.json"userns-remap": "default"を追加)
  2. ホスト側ディレクトリに権限を付与: sudo chmod -R 775 ./src
  3. 非推奨--privilegedオプションはセキュリティリスクがあるため使用しないこと

MySQLとの連携構築

PHPアプリケーションは多くの場合、データベースと接続します。ここではMySQLコンテナを追加し、環境変数経由で接続情報を設定します。

MySQLコンテナのバージョン指定リスク

mysql:8.0とphp:8.2-fpmの組み合わせには互換性リスクがあります。以下は推奨される組み合わせです:

PHPバージョン 推奨MySQLバージョン 補足
8.2 8.0 または 5.7(php-mysqlnd対応) MySQL 8.0ではmysql_native_password認証メソッドが必要
8.1 8.0 バージョン差異によるエラー回避

docker-compose.ymlのMySQLサービス定義

以下をdocker-compose.ymlに追加してください。


環境変数ファイル(.env)の作成と設定

MySQLなどの接続情報を安全に管理するには、.envファイルを作成します。以下は具体的な例です。

.envファイルの具体例

注意: このファイルは.gitignoreに含め、公開しないようにしてください。
PHPアプリケーション内ではこの環境変数を読み込み、データベース接続の設定を行います。


よくあるエラーとその解決法

Dockerで開発環境を構築する際には、いくつかの典型的な問題に出会うことがあります。以下に代表的なものを紹介します。

ポート衝突時の対処

docker-compose up時にポートが使用されている場合、「Address already in use」といったエラーが出ます。解決方法は以下の通りです。

  1. 既存のアプリケーションを停止
  2. 別のポート番号に変更(例: 3000:80

権限不足時の修正手順

Linux環境では、コンテナ起動時に「Permission denied」エラーが発生することがあります。これはホストのディレクトリパーミッションが原因です。

  • ディレクトリに権限を付与(例: sudo chmod -R 775 ./src
  • Dockerデーモンの権限設定変更(/etc/docker/daemon.json

環境構築完了後の確認手順

Docker Composeによる環境構築が完了したら、以下の手順で動作を確認してください。

コンテナ起動確認

ターミナルから以下を実行します。

-dオプションによりバックグラウンドで起動されます。サービス状態はdocker psで確認可能です。


まとめ

DockerとDocker Composeを使用することで、PHP開発環境の構築を効率的に行えます。重要なポイントを以下に整理します。

  1. PHPバージョンとMySQLコンテナとの互換性に注意
  2. --privilegedオプションは非推奨なため使用しない
  3. ホスト側ディレクトリのパーミッションには代替案を検討
  4. .envファイルを具体的に作成し、環境変数で接続情報を管理
  5. エラー対処法や確認手順を事前に把握しておく

以上により、安定した開発環境が構築できます。記事内のサンプルコードを参考に、すぐに導入してください。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-PHP