このリポジトリには、Laravel5.xを動かすための
- php7.2
- nginx
- mysql5.7 の docker イメージが含まれています。
※ Macでの仕様を前提としています。 Windowsではパスの指定が違ってくるため、クローンしてきた状態だとうまくコンテナの作成を行ってくれません。
- Docker Desktop をインストール済み。
- git コマンドが叩ける。
Laravelをインストールするまでのセットアップ手順を順番に説明します。
まず、ディレクトリを作成して、そのディレクトリに移動します。 ※ディレクトリ名は好きな名前でOKです。
$ mkdir laravel-docker
$ cd laravel-docker
そして、作成したディレクトリ内でlaravel-docker
をgithubからクローンします。
$ git clone [email protected]:yukure/laravel-docker.git
docker-compose コマンドを使用してコンテナの作成と起動を行います。
$ docker-compose up -d
exec
コマンドを使用して、コンテナ内に入ります。
docker-compose exec php bash
$ laravel new
これで、Laravelを起動するための環境と、Laravelのインストールが完了しました。
ブラウザで、localhostにアクセスして↓のページが表示されたらOKです!
ページを表示することはできましたが、まだセットアップは終わってません。 とりあえず、タイムゾーンと言語の設定しておきましょう。 これをしておかないと、ログに出力される日時や、DB Recordのcreated_at/updated_atなどが9時間前ずれてしまったり、バリデーションメッセージが英語になってしまいます。
// config/app.php
- 'timezone' => 'UTC',
+ 'timezone' => 'Asia/Tokyo',
...
- 'locale' => 'en',
+ 'locale' => 'ja',
これでOKです。
まず、mysqlのコンテナに入ります。
# コンテナに入る
docker-compose exec db bash
# mysqlにrootユーザでログインする
$ mysql -u root -p
# パスワード聞かれるので root と入力
Enter password:
# ログイン完了!!
mysql>
ログインできたら、DBの作成をします。
# laravel という名前のDB作成
mysql> create database laravel;
# 新しいユーザー作成
mysql> CREATE USER 'laravel'@'%' IDENTIFIED WITH mysql_native_password BY 'laravel';
# 作ったユーザに権限付与
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'%'; FLUSH PRIVILEGES;
# 一旦、ログアウト
mysql> exit
# 先程作ったユーザでログイン (passwordはlaravel)
$ mysql -u laravel -p
# データベース一覧表示
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| laravel |
+--------------------+
# mysqlからログアウト
mysql> exit
# コンテナから抜ける
$ exit
これでmysqlにDB作って、それにアクセスできるユーザの作成をしました。
次は、.env
の編集をします。
.envとは、環境変数が格納されているファイルです。
laravelの各種設定の値が一覧になっているファイルです。 このファイルの値を変更すると、laravelのアプリケーション自体に変更がおきるので、取扱は慎重に!
# 接続先のDBと接続する際のユーザの変更
-DB_HOST=127.0.0.1
+DB_HOST=db
DB_PORT=3306
- DB_DATABASE=homestead
+ DB_DATABASE=laravel
- DB_USERNAME=homestead
+ DB_USERNAME=laravel
- DB_PASSWORD=secret
+ DB_PASSWORD=laravel
webサービスなどでよくある、ログイン機能をlaravelではコマンド1発で(正確には2発)実装できます。
# php のコンテナに入る
$ docker-compose exec php bash
# 認証機能実装(マイグレーションファイル作成やルートの定義などの設定)
php artisan make:auth
# マイグレーション実行
php artisan migrate