🚀

PHP × Node.js 開発環境を一体化!Docker でラクラク Laravel 開発

2024/12/29に公開

PHP × Node.js 開発環境を一体化!Docker でラクラク Laravel 開発

Docker 上で PHP と Node.js の両方が使える便利なイメージを紹介します。softjpn/laravel-nodejs-dev は、php:8.2-fpm をベースにして、Laravel や Composer、Git、Node.js & npm などの主要ツールをあらかじめインストールしたものです。このイメージを使えば、ローカル環境にこれらのツールをひとつずつインストールする必要がありません。


このイメージに含まれているもの

  • PHP 8.2
  • Composer (PHP の依存管理)
  • Laravel Installer (Laravel プロジェクトの新規作成が簡単)
  • Git (バージョン管理)
  • Node.js & npm (JavaScript まわりの開発に必要)

これらがオールインワンで入っているため、プロジェクトに合わせて PHP だけでなくフロントエンド系のビルドやツールもすぐに扱えます。


使い方のポイント

どのコマンドでも共通しているのは、-v "$PWD:/app" でローカルのカレントディレクトリをコンテナ内の /app にマウントする点です。コンテナ内で作成・編集されるファイルは、同じディレクトリ内に直接反映されます。

1. 新しい Laravel プロジェクトを作る

docker run --rm -it -v "$PWD:/app" softjpn/laravel-nodejs-dev laravel new example-app
  • laravel new example-app は Laravel Installer を使って example-app フォルダに新規プロジェクトを作成。
  • --rm -it は終了時にコンテナを自動削除し、対話モードで実行するオプションです。

2. 簡単な PHP スクリプトを実行する

docker run --rm -it -v "$PWD:/app" softjpn/laravel-nodejs-dev php helloworld.php
  • ローカルの helloworld.php をコンテナ内で実行できます。

3. Node.js スクリプトを実行する

docker run --rm -it -v "$PWD:/app" softjpn/laravel-nodejs-dev node ./helloworld.js
  • Node.js があらかじめ入っているので、JavaScript の実行も可能です。

4. PHP のバージョンを確認する

docker run --rm -it -v "$PWD:/app" softjpn/laravel-nodejs-dev php --version
  • 現在のコンテナに入っている PHP のバージョンが表示されます。

5. Git を使う

docker run --rm -it -v "$PWD:/app" softjpn/laravel-nodejs-dev git --version
  • バージョン確認だけでなく、commit や push/pull などのコマンドも実行可能。

6. npm のバージョンを確認する

docker run --rm -it -v "$PWD:/app" softjpn/laravel-nodejs-dev npm --version
  • npm コマンドも同様に利用できます。npm installnpm run dev なども自由に実行可能です。

補足情報

  • デフォルトコマンド
    特にコマンドを指定しない場合、コンテナは php-fpm を起動します。Laravel を Docker Compose で動かす際に便利です。

  • コンテナの作業ディレクトリ
    /app がデフォルトになっています。必ず -v "$PWD:/app" を付けてローカルのフォルダをマウントしましょう。

  • エントリーポイント
    docker-php-entrypoint を使っているため、PHP 関連のコマンドが正しく初期化されます。

このイメージは、Laravel と Node.js をまとめて使えるようにした軽量な開発環境です。複数のツールをあちこちインストールする必要がなく、しかも更新も自動で追従しやすいので、手元の環境を汚さずに開発を進められます。ぜひ試してみてください。

DockerfileSource Code on Github

Discussion