【Laravel】Laradockを使い最速で簡単に環境構築【補足】#1データベースに接続
- 2020.02.24
- Web
今回は、Laravel環境構築シリーズの補足になります。
Webアプリの開発にはデータベースが欠かせません。
Laravel環境構築シリーズで構築したLaravelの環境にデータベース管理システムのMySQLをインストールして、接続してみたいと思います。
↓↓↓Laravel環境構築シリーズの記事一覧はこちらから ↓↓↓
これからやること
・データベース設定
・MySQLコンテナの起動
・phpMyAdminコンテナの起動
・マイグレーション
現在のフォルダ構成は以下のとおりです。
project-folderフォルダにgit cloneしたlaradockフォルダとLaravelを格納しているlaravelフォルダがあるとします。
project-folder
└── laradock
└── laravel
データベース設定
データベースに接続するため、Laravelフォルダにある.envファイルを設定します。.envファイルの9~14行目周辺を以下のように編集します。
project-folder
└── laradock
└── laravel
└── .env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
ここでは、MySQLにデフォルトで用意されている「default」ユーザに接続できるようにしています。
次にMySQLのバージョンを設定をします。デフォルトでは、最新版をインストールするように設定されていますが、MySQLの8.0から認証方式が変更されたみたいです。
参考記事
MySQL8.0 認証方式を変更する(Laravel5)
https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917そのため、今回はMySQL5.7にバージョンを落としてインストールします。Laradockフォルダにある.envファイルの284行目周辺のMySQLのバージョンを5.7にします。
project-folder
└── laradock
└── .env
└── laravel
### MYSQL #################################################
MYSQL_VERSION=5.7
MySQLコンテナの起動
MySQLとはデータベース管理システムのひとつです。
参考記事
【初心者向け】データベースとは何か? わかりやすく簡単に意味を図解
https://26gram.com/what-is-databaseLaradockフォルダにある「docker-compose.yml」の412行目周辺にあるMySQLの項目に「command: –innodb-use-native-aio=0」を追加します。
project-folder
└── laradock
└── docker-compose.yml
└── laravel
### MySQL ################################################
・
・
・
中略
・
・
・
command: --innodb-use-native-aio=0
参考記事
dockerのMySQLコンテナでなぜ”command: –innodb-use-native-aio=0″が必要な環境があるのか
https://cpoint-lab.co.jp/article/201911/12852/余談ですが、僕はMySQLコンテナを起動させたところ、一向に立ち上がらなくて、原因がわからずこのコマンドが必要だということに2、3日もの時間がかかってしまいました。悲
環境構築をするときにこういうことはよくありますよね笑
laradockフォルダに移動して、下記のコマンドを叩いて、MySQLのコンテナを起動させます。
そのあと、コンテナの起動確認を行います。「State」の欄が「Up」になっていれば、OKです。
$ pwd
/c/Users/ユーザ名/Desktop/project-folder/laradock
$ docker-compose up -d nginx mysql
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mysql_1 docker-entrypoint.sh --inn ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1 /bin/bash /opt/startup.sh Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
phpMyAdminコンテナの起動
Laradockの中には、なんと便利なことにWebブラウザからMySQLを管理できるツールであるphpMyAdminコンテナが入っています。
デフォルトでは、phpMyAdminは8080ポートが設定されています。しかし、8080ポートは他に起動しているコンテナでも使われているため、ポートを変更したいと思います。
Laradockフォルダの.envファイル393行目周辺のPMA_PORTを8080から9000にしようと思います。
project-folder
└── laradock
└── .env
└── laravel
### PHP MY ADMIN ##########################################
・
・
・
中略
・
・
・
PMA_PORT=9000
では、phpMyAdminコンテナを起動させましょう。
$ docker-compose up -d phpmyadmin
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mysql_1 docker-entrypoint.sh --inn ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1 /bin/bash /opt/startup.sh Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:9000->80/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
ブラウザのアドレス欄に「http://192.168.99.100:9000」を入力して、下記のページが表示されたら、OKです。
ちなみに、デフォルトでは下記の情報でphpMyAdminにログインできます。
・defaultのデータベースのみ操作可能
サーバ:mysql
ユーザ名:default
パスワード:secret
・全てのデータベースを操作可能
サーバ:mysql
ユーザ名:root
パスワード:root
GUIでデータベースを管理するのはではなく、SQLコマンドで管理したい方は、MySQLコンテナの中に入って、操作します。
$ pwd
/project-folder/laradock
$ docker-compose exec mysql bash
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 119
Server version: 5.7.29 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
マイグレーション
マイグレーションとは、Laravelからデータベース内にテーブルを作成することができる機能です。
Laravelにはデフォルトで以下のマイグレーションファイルが存在しています。
Artisan(アルチザン)コマンドで、これらのマイグレーションファイルからデータベースにテーブルを作成します。
データベースにテーブルが作成されていたら、データベースに接続できたとします。
参考記事
【Laravel】わりとよく使うArtisanコマンド集
https://qiita.com/sola-msr/items/a09b857c5e7f7c88d01dArtisan(アルチザン)コマンドを使うためには、workspaceコンテナに入る必要があります。
$ pwd
/project-folder/laradock
$ docker-compose exec workspace bash
/var/www#
以下のコマンドで、マイグレーションすることができます。
# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)
phpMyAdminにログインしてみて、defaultに下記のテーブルが作成されていたら、成功です。
まとめ
これで、Laravelからデータベースに接続できるようになりました。
クライアントPCのWebブラウザから取得したデータをもとにデータベースに問い合わせて、データを取得する。
取得したデータをクライアントPCのWebブラウザに表示させるといった動きのできるWebアプリを開発する準備が整いました。
今回は以上です。
それでは。
-
前の記事
【Laravel】Laradockを使い最速で簡単に環境構築 #3Laravelインストール 2020.02.23
-
次の記事
【Laravel】Laradockを使い最速で簡単に環境構築【補足】#2認証機能を実装 2020.02.29