2021/12/08
前回は Docker を使ってローカル環境構築を行いました。
ただ、Laravel の DB 接続の設定は行っていません。
今回はその続きで Laravel の DB 接続設定を行いマイグレーションまで行おうと思います。
せっかくなので Docker に phpMyAdmin を入れて phpMyAdmin からDBの中身を確認してみましょう。
PHP で作成された MySQL の管理ツールです。これを使うと Docker コンテナの中に入らなくても Docker で建てた MySQL にアクセスができるようになります。また、GUIベースでMySQLを簡単に操作することができるので初心者にとっても心強いツールです。
事前知識
ディレクトリ構成の変更
セッション情報をボリュームに設定して永続化するようにします。
Docker の管理下でストレージ領域を確保。
ディレクトリ構成は以下のように変更します。
Docker Composeにおける各種ファイルの変更時の反映について
docker-compose.yml変更を反映
・イメージ:再構築の必要なし
・コンテナ:再構築の必要あり:docker-compose up -d
Dockerfileの変更を反映
・イメージ:再構築の必要あり:docker-compose build
・コンテナ:再構築の必要あり:docker-compose up -d
ミドルウェア等の設定変更を反映
・イメージ:再構築の必要あり:docker-compose build
・コンテナ:再構築の必要あり:docker-compose up -d
手順
1)phpMyAdminのインストール(Docker)
前回に作成した docker-compose.yml の末尾に phpMyAdmin の定義を追加します。
:
# ----------------------------------
# phpMyAdminを動かすコンテナ
# ----------------------------------
phpmyadmin:
# Docker Hubからイメージをダウンロード
image: phpmyadmin/phpmyadmin:5
# コンテナの名前
container_name: phpmyadmin
# コンテナと他のサービスを繋げる
links:
- db
# localhost:8080 で phpmyadmin の管理画面にアクセス
ports:
- 8080:80
# セッション情報をボリュームに設定して永続化
volumes:
- ./docker/phpmyadmin/sessions:/sessions
2)docker-compose.ymlの更新を反映させる
今回は dockr-compose.yml だけ編集しました。
冒頭の「事前知識」で書いたように docker-compose.yml の更新を反映させるには docker-compose up -d
コマンドを実行させます。
(※普段、docker-compose でコンテナを起動するコマンドと変わりません。)
下記のコマンドを実行すると更新後の docker-compose.yml を元に、コンテナの再構築が行われます。(※追記した phpMyAdmin のコンテナが起動されます)
# -dオプションは、バックグランドで起動するオプション
$ docker-compose up -d
下記のように、各コンテナ(laravel_app、laravel_db、phpmyadmin)が起動(done)になれば OK です。
【 ERROR: The Compose file is invalid 】
事象:エラー内容「書き方がおかしいから無効」
原因:「phpmyadmin:」の前に半角スペースがない
「phpmyadmin:」の前に半角スペースがないと services と同じ列になるのでエラーになります。docker-compose.yml の記述ではインデントに関して十分注意しましょう。
3)phpMyAdminへアクセス
上記のURLへアクセスし、phpMyAdminの画面が表示されればOKです。
前回、docker-compose.yml の dbコンテナに環境変数(environment:)で Laravelでの接続情報を記述しました。
:
# コンテナ内の環境変数を指定。
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel_db
MYSQL_USER: laravel_user
MYSQL_PASSWORD: laravel_pass
TZ: 'Asia/Tokyo'
:
この情報で接続できるか確認してみましょう。
上記のような画面になればOKです。
4)マイグレーションの実行
ここから先は以前「はじめてのVPS」シリーズで解説しているので端折って解説します。
詳しくは以下のページをご参照ください。
はじめてのVPS初期セットアップ⑬ ~ Laravelの設定+DB接続 ~
(1).envファイルの編集
Laravel のソースを格納しているディレクトリは C:\Users\User\src になります。
前回の記事では「laraveltokyo」というプロジェクト名で Laravel をインストールしたので.envファイルの場所は
C:\Users\User\src\laraveltokyo\.env になります。
:
DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
DB_HOST=laravel_db
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=laravel_pass
:
Docker の MySQL は外部アプリなどから localhost(172.0.0.1) で接続することができません。サービス名もしくはコンテナ名で接続する必要があります。ここではコンテナ名を記述しました。
(2)Laravelのコンテナにアクセス
# appコンテナ(名称:laravel_app)に入ります
# winpty はWindows環境の方のみつけてください
$ winpty docker exec -it laravel_app bash
(3)マイグレーション実行
laravel_app コンテナに入ったらまず Laravel プロジェクトに移動します。
(※ artisanコマンドが使えません)
# laravelプロジェクトに移動
$ cd laraveltokyo/
# マイグレーション実行
$ php artisan migrate
5)動作確認
もう一度、phpMyAdmin にログインをして DB のテーブルを見てみましょう。
上記のようにテーブルが確認できれば OK です。
以上です。
Udemyを使ったLaravel学習方法
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。