かぶりモノ

神社仏閣巡り、プログラミング、日記とか

Laravel 欲張りスターターキットを作った

f:id:keisukekudo:20191231145948j:plain

タイトルの通り、Laravel をすぐに使い始められるように、開発環境を Docker で作れるようにした。
欲張り感はないです。

Laravel で Docker といえば Laradock が有名だが、ハマりどころは多いし、 Laravel に関係のない Dockerfile も同梱されているので、純粋に勉強したいという人にはノイズが多すぎる印象を受ける。
そこで、できるだけシンプルに Nginx + PHP + DB という構成にし、コマンドも最低限で済むように構成したのが冒頭で紹介した laravel-starter-kit だ。

使い方

Makefile にコマンドをまとめている
見てもらえればわかると思うが、 docker-compose をラップしているだけ。

新規のプロジェクトを立ち上げる場合

まずプロジェクト用のディレクトリを作成する。

$ mkdir example-project && cd example-project

そして git submodulelaravel-starter-kit を追加する。
その際には、 docker というディレクトリで作成すると後々わかりやすいだろう。

$ git submodule add https://github.com/KeisukeKudo/laravel-starter-kit.git docker
$ cd docker

.env.example に定義されているバージョンで環境を作成するのであれば何も考えず、以下のコマンドを実行すればOK

$ make starter

setup.shdocker-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 を入力
  • ポート: 3306
  • データベース名: app
  • ユーザー名: default
  • パスワード: secret

まとめ

開発環境構築で躓いて、なかなか言語やフレームワークの学習に手が付かない、というケースはよく見るので、是非この laravel-starter-kit を使ってサクッと構築してもらいたい。
質問はコメントでも GitHub でも Twitter でもどこでもOK
偉そうなことを言っているが、僕は Docker 歴1年程度でそんなに詳しくないので、もっとこうしろああしろみたいなのもどんどん投げてほしい。