🚢

Laravel + Dockerでホストにcomposerをインストールしないためのコマンド

2024/04/18に公開

やりたいこと

DockerでLaravelを開発する場合、Laravelコンテナはphpだけにしたい(composerは入れたくない)。

しかし、Laravelのプロジェクトを始める時、composer create-projectまたはgit clone + composer installを実行する必要がある。

なので、composer create-projectcomposer installcomposerイメージを使用して実行する。

やり方

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