Laravel 欲張りスターターキットを作った
タイトルの通り、Laravel をすぐに使い始められるように、開発環境を Docker で作れるようにした。
欲張り感はないです。
Laravel で Docker といえば Laradock が有名だが、ハマりどころは多いし、 Laravel に関係のない Dockerfile も同梱されているので、純粋に勉強したいという人にはノイズが多すぎる印象を受ける。
そこで、できるだけシンプルに Nginx + PHP + DB という構成にし、コマンドも最低限で済むように構成したのが冒頭で紹介した laravel-starter-kit
だ。
使い方
Makefile
にコマンドをまとめている。
見てもらえればわかると思うが、 docker-compose
をラップしているだけ。
新規のプロジェクトを立ち上げる場合
まずプロジェクト用のディレクトリを作成する。
$ mkdir example-project && cd example-project
そして git submodule
で laravel-starter-kit
を追加する。
その際には、 docker
というディレクトリで作成すると後々わかりやすいだろう。
$ git submodule add https://github.com/KeisukeKudo/laravel-starter-kit.git docker $ cd docker
.env.example
に定義されているバージョンで環境を作成するのであれば何も考えず、以下のコマンドを実行すればOK
$ make starter
setup.sh と docker-compose up -d
が順番に実行される。
処理が完了し、コンテナが立ち上がったら https://127.0.0.1
にアクセスすれば Laravel のスタート画面が表示されるはずだ。
Laravel 関連のファイルは、最初に作成したプロジェクトディレクトリ直下、 docker
ディレクトリと同じ階層に作成される。
Laravel や Node.js、各コンテナのベースイメージのバージョンを指定したという場合は、 .env.example
をコピーして .env
というファイルを作成する。
$ cp .env.example .env
.env
に記述されているバージョン情報を変更して make starter
を実行すれば設定値の通りに環境が構築される。
laravel-starter-kit
では RDBMS のデフォルトは MariaDB を利用している。
ただ、Windows の一部環境でデータディレクトリがマウント出来なかったり、プロジェクトの要件的に MySQL を使わなければならない場合もあると思うので、 MySQL の環境も構築できるようにした。
.env
ファイルの MariaDB の設定値をコメントアウトするか削除、 MySQL の設定値を有効化して再ビルドすればOK
ちなみに、特に設定値の変更をすることなく MySQL 8 を利用できる。
# MariaDB # https://hub.docker.com/_/mariadb?tab=tags # DATABASE_BUILD_PATH=./mariadb # DATABASE_IMAGE_VERSION=10 # DATABASE_CONF=./mariadb/conf.d # DATABASE_DATA=./mariadb/data # DATABASE_INIT=./mariadb/init.d # OR # MySQL # https://hub.docker.com/_/mysql?tab=tags DATABASE_BUILD_PATH=./mysql DATABASE_IMAGE_VERSION=8 DATABASE_CONF=./mysql/conf.d DATABASE_DATA=./mysql/data DATABASE_INIT=./mysql/init.d
すでに既存プロジェクトに組込まれている場合
プロジェクトリポジトリをクローンしたら、 docker
ディレクトリに入って以下のコマンドを実行
$ make build && make up
make stertup
実行後と同じく、ブラウザで https://127.0.0.1
にアクセスすればOK
各コンテナに入る
make exec-
で始まるコマンドを実行すれば各コンテナの bash
を起動できる。
$ make exec-nginx $ make exec-php $ make exec-db
接続
あくまでもデフォルト値で作成した場合
アプリケーション
phpmyadmin
データベース
- ホスト:
db
もしくはlaravel-starter-database
- SQL クライアントを使用して接続する場合は
127.0.0.1
を入力
- SQL クライアントを使用して接続する場合は
- ポート: 3306
- データベース名: app
- ユーザー名: default
- パスワード: secret
まとめ
開発環境構築で躓いて、なかなか言語やフレームワークの学習に手が付かない、というケースはよく見るので、是非この laravel-starter-kit
を使ってサクッと構築してもらいたい。
質問はコメントでも GitHub でも Twitter でもどこでもOK
偉そうなことを言っているが、僕は Docker 歴1年程度でそんなに詳しくないので、もっとこうしろああしろみたいなのもどんどん投げてほしい。