🚢
Laravel + Dockerでホストにcomposerをインストールしないためのコマンド
やりたいこと
DockerでLaravelを開発する場合、Laravelコンテナはphpだけにしたい(composerは入れたくない)。
しかし、Laravelのプロジェクトを始める時、composer create-project
またはgit clone
+ composer install
を実行する必要がある。
なので、composer create-project
、composer install
をcomposerイメージを使用して実行する。
やり方
composer create-project をする場合
composerイメージを使用してcomposer create-project laravel/laravel my-app
を実行。
(my-app
は任意の名前に変更できます。)
docker run -w /app -v .:/app --rm composer composer create-project laravel/laravel my-app
my-app
ディレクトリ配下にlaravelプロジェクトが作成される。
composer install をする場合
Laravelプロジェクトのルートディレクトリに移動
cd my-app
composer installをする。
docker run -w /app -v .:/app --rm composer composer install
my-app/vender/
が作成されれば成功
何をしているか
createコマンドをそれぞれ分解すると、
docker run \ # コンテナ内でコマンドを実行
-w /app \ # コンテナ内の/appでコマンドを実行する
-v .:/app \ # カレントディレクトリをコンテナ内の/appと同期
--rm \ # 最後にコンテナを削除する
composer \ # composerイメージを使用 ( https://hub.docker.com/_/composer )
# Laravelプロジェクトを作成 ( https://laravel.com/docs/11.x/installation#creating-a-laravel-project )
composer create-project laravel/laravel my-app
installコマンドは最後の部分をcomposer install
に変更しただけ。
Discussion