LoginSignup
0
1

More than 3 years have passed since last update.

docker 上の composer 経由で指定位置に laravel プロジェクトを用意するメモ

Posted at

結論: どうやって実現するか

※ docker は事前にインストール・起動済みとします。(コダワリがなければ Docker Desktop https://www.docker.com/products/docker-desktop や WSL2 上に Docker をインストールして使えるようにしとけば OK です。)

例えば、 ~/Documents/tmp/laravel-project-via-composer という laravel プロジェクトを作るなら以下。

% cd ~/Documents/tmp
% docker run --rm -i -t -v $PWD:/app composer create-project --prefer-dist laravel/laravel laravel-project-via-composer
  1. laravel プロジェクトを配置したいディレクトリに移動して
  2. そのディレクトリで composer のオフィシャルイメージを使って、 laravel プロジェクトを準備する

これだけ。

(なんなら、 -i -t も不要だが、出力が見やすくなるので入れてる。)

これで ~/Documents/tmp/laravel-project-via-composer に用意される。

$PWD を任意のディレクトリすれば、コマンドの発行元ディレクトリはどこでも良いので、 % cd ~/Documents/tmp も要らない。(が、うっかりミスとか怖いから、個人的には cd してからコマンド実行したい派。)

念の為に書くと $PWD:/app の右辺が /app となっているのは https://github.com/composer/docker/blob/fbef2df32932859094b4cd3fb072f1e93a7fa1f8/2.0/Dockerfile#L60 にて、 WORKDIR /app となっているから。

※つまり、もし、何らかの理由で将来 composer の Docker image の WORKDIR の位置が変わったら同様にコマンド発行時のパスも変更することになる。(使う image の Dockerfile を読むの大切。)

なぜこの方法を使うのか

  • ローカルの環境の PHP や Composer のバージョンとか気にしたくない
  • anyenv とかでも管理できるけど、 OpenSSL のバージョン齟齬とかで面倒…
  • build するより docker image 使ったほうが早い
  • 多くの場合、本来的目的は、 build をしたいのではなく、 laravel プロジェクトを用意したいだけ
  • laravel プロジェクト用意した後に、 WEB App 実行用の Dockerfile や docker-compose 用ファイルは別途用意したら良い

たぶん、他のある程度有名な FW やパッケージマネージャーがあるなら同様の考え方で WEB App の下準備ができるはず。(ハードウェアとの通信が必要とか、そういうのは別のお話。)

ハードウェアトラブルや、ハードウェアの乗り換えとかで、いちいちローカル環境を整備するコストを考えると馬鹿らしいので、使えるものは使うと便利かも知れませんよ?というお話でした。

ちなみに laravel/installer をインストールして laravel new hoge という選択肢も当然にあるのですが、 docker 使って開発環境用意するだけなら composer の image 使って実行した方が楽やん?って思ってます。知らんけど。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1