Laravelのdocker環境構築。laradockでざっくりと。


laradockを使ったlaravelの環境構築についてざっくり流れをまとめました。
docker自体初めてだったので備忘録としてメモっときます。

前提

・dockerがインストールされていること
・gitができる環境であること

➀作業ディレクトリ内にlaradockをクローン

$ mkdir project 
$ cd project

$ git clone https://github.com/Laradock/laradock.git

ここでは作業ディレクトリはproject。
laradockはgitのクローンによって取り込みます。

こんな感じでlaradockのディレクトリができると思います。

➁設定ファイル.envを作成

laradockでは各コンテナの環境変数の設定は.envファイルに定義します。これらはdocker-compose.ymlファイルに適用します。
laradock内のenv-exampleをコピーして.env作成します。

$ cd laradock
$ cp env-example .env

➂.envを編集する

mysqlの設定

mysqlのバージョンはデフォルトではlatestとなっており、そのままだと8.0系のバージョンとなるので5.7に変更しておきましょう。
なぜかというと8.0では認証などの改変があり、ログインできないなど問題が生じます。特にphpmyadminを使いたい場合は5.7にしておきましょう。
自分はここでつまずいて、めちゃくちゃ時間がとられました。

ユーザ名、パスワード等も変更します。

MYSQL_VERSION=latest → MYSQL_VERSION=5.7
MYSQL_USER=default → MYSQL_USER=root
MYSQL_PASSWORD=latest → MYSQL_PASSWORD=root

➄コンテナの構築、起動

mysql、nginx、phpmyadminのコンテナを起動します。
workspaceなどのコンテナはnginxと依存関係にあるため、指定しなくても伴って立ち上がります。

$ docker-compose up -d nginx mysql phpmyadmin

docker-composeは複数のコンテナをまとめて管理する仕組みです。
docker-compose upのコマンドはdocker-compose.ymlに書いてある複数のコンテナの構築と起動を行うことができます。

➅laravelのプロジェクトの作成

laravelのインストールにはcomposerやnodeなどのツールが用意されているworkspaceコンテナで行います。

まずはコンテナ内に入ります。

$ docker-compose exec  workspace bash

execはコンテナのサービスを実行するためのコマンド。コンテナ内に入るにはbashをつけます。

composerでlaravelのプロジェクトを作成します。

$ composer create-project --prefer-dist laravel/laravel myapp


作業ディレクトリ内にlaravelのプロジェクトができたと思います。

laravel側のDB設定もしておきます。
laravel内の.envファイルとconfig/database.phpの項目を変更します。
ユーザ名:root
パスワード:root
ホスト名:mysql
DB名:default

➆laravelの場所を指定

.envのAPP_CODE_PATH_HOSTの項目を見てみるとデフォルトでは
作業ディレクトリが指定されています。

これをAPP_CODE_PATH_HOST=../myapp/に修正します。

➇マイグレーション

再びworkspaceコンテナに入りマイグレーションを行います。

$ php artisan migrate

➈ブラウザからアクセス

ブラウザからhttp://localhostにアクセスしてlaravelのホームページが表示されれば成功。

➉phpmyadminにアクセス

http://localhost:8080にアクセスします。

サーバ:mysql
ユーザ名:root
パスワード:root

これらを入力してログインできればOK。
テーブルが作成されているか確認しましょう。

最後に

laradockでの環境構築はとても簡単で、とりあえずdockerでlaravelを立ち上げてみたい人には合ってると思います。でもプロジェクトが必要以上に大きくなること、またdockerに対する知識がなくてもできてしまうように感じられます。

もう少しdockerについて理解を深めるためにはlaradockを使わない方法もやってみるといいと思います。
そちらの方法の記事も書きましたので良ければどうぞ→https://qiita.com/rope19181/items/10da72374839630af83b