Dockerを用いてLaravelの開発環境を1コマンドで構築

はじめに

Laravelの開発環境を構築するには様々な方法があります。
その中でLaradockはdockerを用いて素早く構築できる有力な選択肢の一つです。
しかしそれでも数ステップの作業を行う必要があります。
そこでもっと簡単にできないかということで試行錯誤しましたのでご紹介します。

shomatan/laravel-docker

特徴

  • 何と言っても1コマンドですぐ構築
  • 必要なものは同梱してビルドしているので、ローカルでビルドする必要がありません
  • 好きなバージョンで開発可能(現在5.4と5.1を用意しています)
  • Alpine Linuxがベースなので軽量です
  • cronエントリーを設定済みなのでタスクスケジュールの機能が使えます

使用方法

あらかじめDockerやdocker-composeのインストールが必要です。

起動

docker-compose up -d

しばらくするとhttp://localhostでアクセス可能です。
laravelディレクトリが作成されその中に全ソースが配置されています。
お好みのIDE等で開発できます。

artisanコマンドについて

デフォルトで作成される.envにはDBホストとしてcomposeで同時に作成されるDBサーバーを指定しています。
そのため artisan migrate等を行ってもホストから見える接続情報が異なるためエラーが出ます。
対処法としてdockerコンテナ内で作業を行います。

docker exec -it laravel-app sh

もしくはコンテナ内に入らずコマンドを実行します

docker exec -it laravel-app php artisan migrate

削除

docker-compose kill
docker-compose rm -f
rm -rf laravel

各コンテナの構成について

web

ベースにオフィシャルのnginxイメージを使用し、gid uidともに1000のwwwユーザーを作成しています。

app

ベースにオフィシャルのphpイメージを使用し、gid uidともに1000のwwwユーザーを作成しています。
web、app共に同一idのwwwユーザーを作成することで両コンテナからphp-fpm.sockの読み書きをできるようにしました。
その後にlaravelで必須のパッケージ群をインストールし、composerでLaravelプロジェクトを作成し composer installで依存するライブラリをインストールしておきます。
appコンテナ起動時にdocker-entrypoint.shで.envの設定やDBコンテナが立ち上がるまで待機する処理を実行します。

終わりに

今後redis等のコンテナも起動するように設定し、Laradockに近づけて行きたいと思います。

[紹介元] PHPタグが付けられた新着投稿 – Qiita Dockerを用いてLaravelの開発環境を1コマンドで構築

  • コメント

    1. 匿名希望
      2017/08/21(月) 06:01:22

      バックエンドでmysqlのdockerコンテナだけが動いてる「コマンドライン一発でcsvをsqlでグリグリできるツール」って面白いかも、という電波を受信

    2. 匿名希望
      2017/08/21(月) 06:01:22

      garland/aws-cli-dockerでawsコマンドやるにしても,ちゃんと -v $PWD:/data とでもしとけばいいのか.コンテナ内にファイルを参照させるのしんどいとか思ってたけど /data というディレクトリが都合よく作られてるからこれでいいわ

    3. 匿名希望
      2017/08/21(月) 06:01:22

      これから調べて試したいのは…
      – Nginxで動かす
      – コンテナにSSHはいってコマンド実行するには?
      – Java動かす環境もつくりたいな

    記事に戻る

関連記事