Laravelローカル環境構築(Docker その② ~ DB設定+phpMyAdmin ~)

2021/02/14

前回は Docker を使ってローカル環境構築を行いました。

ただ、Laravel の DB 接続の設定は行っていません。

今回はその続きで Laravel の DB 接続設定を行いマイグレーションまで行おうと思います。

せっかくなので Docker に phpMyAdmin を入れて phpMyAdmin からDBの中身を確認してみましょう。

【 phpMyAdmin 】
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へアクセス

http://127.0.0.1:8080

上記の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」シリーズで解説しているので端折って解説します。

詳しくは以下のページをご参照ください。

 

(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
:

 

【 POINT 】
Docker の MySQL は外部アプリなどから localhost(172.0.0.1) で接続することができません。サービス名もしくはコンテナ名で接続する必要があります。ここではコンテナ名を記述しました。

 

(2)Laravelのコンテナにアクセス

# appコンテナ(名称:laravel_app)に入ります
# winpty はWindows環境の方のみつけてください
$ winpty docker exec -it laravel_app bash

dockerコマンドを実行するときは DockerPracticeディレクトリ直下で実行してください。

 

(3)マイグレーション実行

laravel_app コンテナに入ったらまず Laravel プロジェクトに移動します。

(※ artisanコマンドが使えません)


# laravelプロジェクトに移動
$ cd laraveltokyo/

# マイグレーション実行
$ php artisan migrate

 

5)動作確認

もう一度、phpMyAdmin にログインをして DB のテーブルを見てみましょう。

 
上記のようにテーブルが確認できれば OK です。

以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築