【Laravel】laradockを使ってLaravelの開発環境を構築してみよう!
これは2019/8/12現在における備忘録です。
Contents
Dockerのインストール
まずDockerをインストールしておきます。
Mac版はこちら
インストールしたらターミナルからインストールがされているかどうか確認しましょう。
$ docker version
Client: Docker Engine - Community
Version: 19.03.1
(省略)
$ docker-compose -v
docker-compose version 1.24.1, build 4667896b
作業ディレクトリの作成
ここから先はプロジェクトを作る毎に行う作業です。
任意の位置にLaravelProjectディレクトリ及び配下にsrcディレクトリを作成します。
LaravelProjectは好きな名前で結構です。
またgitでのバージョン管理を行うため、gitの初期化コマンドも合わせて実行しておきます。
$ mkdir LaravelProject && cd LaravelProject (作業場所を作成したプロジェクトディレクトリに変更します)
$ mkdir src (srcディレクトリが作成されます。)
$ git init (.gitディレクトリが作成されます。)
Laradockの準備
次に肝心のLaradock本体を、gitのsubmoduleとして追加します。
$ git submodule add https://github.com/Laradock/laradock.git (laradockディレクトリが作成されます。)
以上で
LaravelProject ├── laradock ├── src ├── .git └── .gitmodules
このようなディレクトリ構成になるかと思います。
Laravelのインストール先の指定
まず、Laradockの設定ファイル『.env』をサンプルファイルを元に作成します。
$ cd laradock (作業場所をlaradockディレクトリに変更します。)
$ cp env-example .env (exv-exampleファイルを.envという名前でコピーします。)
今回はLaravelのインストール先をsrcディレクトリ配下にするため、
上記コピーした.envファイルを下記のように書き換えます。
APP_CODE_PATH_HOST=../ を APP_CODE_PATH_HOST=../src/ に書き換えます。
また、MySQLのデータベースファイルの保存場所をsrcディレクトリと同じ場所に変更します。
そのため上記と同様に.envファイルを書き換えます。
DATA_PATH_HOST=~/.laradock/data を DATA_PATH_HOST=../.laradock/data に書き換えます。
データベースはコンテナを破棄しても削除されず、また、保存場所が初期状態では別コンテナからも同じデータベースを参照してしまいます。
それを避けるため、プロジェクトごとにデータベースファイルが作成されるように、プロジェクトディレクトリの中に保存場所を変更しました。
my.cnfの書き換え
laradock/mysqlの中のmy.cnfを編集します。
[mysqld]配下に
default_authentication_plugin=mysql_native_password
を追記しておきます。
これは、Laradockが最新のMySQLイメージをダウンロードしてきてしまうからです。
MySQL8.0からセキュリティが強化されており、ユーザー認証方式が従来の『mysql_native_password』方式から
ハッシュ化をする『caching_sha2_password』方式へと変更されています。
ただ、PHPの接続ライブラリが『caching_sha2_password』に対応していないため、
この『my.cnf』内で従来どおりの『mysql_native_password』を利用するよう指定する必要があるのです。
dockerコンテナの起動
docker-compose.ymlのある場所で作業します。
まずはnginxを立ち上げてみましょう。
$ pwd
/LaravelProject/laradock
$ ls -la | grep docker-compose.yml
-rw-r--r-- 1 user staff 53394 8 12 11:51 docker-compose.yml
$ docker-compose up -d nginx (このコマンドで起動します。)
Workspaceコンテナへの接続
先程起動したnginxに依存しているworkspaceも起動しているか確認します。
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d73f7997843c laradock_nginx "/bin/bash /opt/star…" 5 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp laradock_nginx_1
05307c072d63 laradock_php-fpm "docker-php-entrypoi…" 6 seconds ago Up 4 seconds 9000/tcp laradock_php-fpm_1
564460a61a92 laradock_workspace "/sbin/my_init" 7 seconds ago Up 5 seconds 0.0.0.0:2222->22/tcp laradock_workspace_1
19c91a2a3e84 docker:dind "dockerd-entrypoint.…" 8 seconds ago Up 6 seconds 2375-2376/tcp laradock_docker-in-docker_1
laradock_workspaceが起動していることが確認できるかと思います。
もしworkspaceが起動してなければ次のコマンドで起動させます。
$docker-compose up -d workspace
次にworkspaceコンテナへ接続します。
$docker-compose exec workspace bash
Laravelのインストール
では、workspaceコンテナ内で作業していきます。
『/var/www』配下にcomposerを使ってLaravelをインストールしましょう。
# pwd
/var/www
# composer create-project --prefer-dist laravel/laravel ./
あとは、『http://localhost』を開いてみて、Laravelのページが表示されればOKです。
また、workspaceコンテナからexitコマンドで抜けて、
ローカル上のsrcディレクトリにLaravel関連のファイルが作成されていることを確認しておきましょう。
MySQLへの接続設定
いよいよLaravel本体のDB接続設定をしていきます。
srcディレクトリ配下の.envを開いて下記のとおり変更しましょう。
$ cd ../src
DB_CONNECTION=mysql DB_HOST=mysql # 127.0.0.1をmysqlに変更 DB_PORT=3306 DB_DATABASE=default # homesteadをdefaultに変更 DB_USERNAME=default # homesteadをdefaultに変更 DB_PASSWORD=secret
mysqlとphpmyadminを起動
実際にデータベースと、接続確認用のphpMyAdminを起動していきます。
docker-compose.ymlのある場所で作業するため、laradockディレクトリに移動します。
mysqlコンテナと、phpmyadminコンテナを起動しましょう。
$ cd ../laradock
$ docker-compose up -d --build mysql
$ docker-compose up -d phpmyadmin
mysqlについてはbuildオプションをつけて起動します。
これは、docker-compose upで起動する際キャッシュが利用され、my.cnfで書き換えた設定が反映されないことがあるためです。
このオプションをつけるとキャッシュを利用しないよう指定できます。
phpMyAdminに接続
http://localhost:8080をブラウザで開いてphpMyAdminに接続します。
先程src/.envファイルで設定したとおり
ホスト | mysql |
ユーザーID | default |
pass | secret |
でログイン出来ることを確認します。
エラーの確認
最後にworkspaceコンテナに再度入り、下記コマンドでエラーがでないことを確認します。
$ docker-compose exec workspace bash
$ php artisan migrate
ここでエラーがなければOKです。
フロントエンドの環境準備
srcディレクトリにてnpmでnode_modulesをインストールしておきます。
$ cd src
$ npm install
ビルドの実行
$ npm run watch
ファイルの更新を監視し、更新されたら自動ビルドしてくれるコマンドです。
これにて環境設定は完了です。
以下は環境を再構築する際のコンテナの削除方法です。
コンテナの削除の方法
docker-compose.ymlのある場所で
docker-compose down
.laradock/もデータベースを永続化するためのディレクトリなので削除しておきます。
プロジェクトごと削除したほうが早いです。
rm -rf LaravelProject
参考
docker ps | 動いているコンテナの確認 |
docker ps -a | 停止のものも確認できる |
docker images | imageファイルの一覧を表示 |
以上、Laravelの開発環境作成でした。