Help us understand the problem. What is going on with this article?

DockerとLaradockでPHPフレームワークとCMSの開発環境を構築する【MySQL( latest)8.0.11対応】

More than 1 year has passed since last update.

初めまして。Qiitaでの初回投稿になりますが、よろしくお願いします。

DockerとLaradockでPHPフレームワークとCMSの開発環境を構築します。Dockerでの開発環境構築を勉強するために参考情報を調べていたらLaradockという便利そうなものを見つけました。

Composerが入ってるだけだから別のフレームワークでも使える
PHPカンファレンス関西2017に行ってきました | プログラミングメカブログ

と言う記事も見かけたので、以下のPHPフレームワークとCMSの開発環境をDockerとLaradockを利用して用意してみようと思います。

今回実施するもの

PHPフレームワーク

CMS

mysqlバージョンについて

以下の記事を参考に[ my.cnf ]に[ default_authentication_plugin=mysql_native_password ]を追記しlatest(8.0.11)に対応しました。
参考:日々の覚書: MySQL 8.0.4におけるデフォルト認証形式の変更

mysqlのデフォルトの認証方式がバージョン8.0.4から[ caching_sha2_password ] に変更があったため、latestバージョン(8.0.11)でPHPフレームワークやCMSの開発環境構築を進めて行こうとすると以下のようなエラーが発生します。

#エラー内容
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
PDO::__construct("mysql:host=mysql;port=3306;dbname=default", "default", "secret", [])

参考:SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client · Issue #1392 · laradock/laradock

エラー解消の参考情報は見つけたのですが、個人的にmysqlはバージョン8.0.3または5.7.22で問題ないため、latestバージョン(8.0.11)は使用しないことに決めました。

バージョン情報

  • Mac OS 10.11.6(El Capitan)
  • Docker Toolbox
    • Docker version 18.03.0-ce
    • Oracle VM VirtualBox Manager 5.2.12
  • Laradock
    • PHP 7.2.4 (fpm-fcgi)
    • nginx version: nginx/1.15.0
    • mysql Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)
  • Laravel 5.6.26

その他情報

laradock設定

起動するコンテナ群の環境変数設定ファイル作成し、laradock設定を行います。

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

#コンテナ群の環境変数設定ファイル作成
$ cp env-example .env

[ .env ]の[ Paths ]でPHPフレームワークやCMSを展開するディレクトリや、DBデータの永続場所が指定できますので必要に応じて変更して下さい。

APP_CODE_PATH_HOST=../
DATA_PATH_HOST=~/.laradock/data

mysql latest設定

mysqlバージョンlatest(8.0.11)に合わせて設定を変更します。

$ vi docker-compose.yml
  ports:
    - "${MYSQL_PORT}:3306"
  networks:
    - backend
+ user: "1000:50"

$ vi mysql/my.cnf
+ innodb_use_native_aio=0
+ default_authentication_plugin=mysql_native_password

コンテナ起動確認

[ .env ]と[ docker-compose.yml ] の設定を元にコンテナを生成起動します。

$ docker-compose up -d nginx mysql
$ docker-compose ps
           Name                          Command              State                   Ports                 
------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh           Up      2375/tcp                              
laradock_mysql_1              docker-entrypoint.sh mysqld     Up      0.0.0.0:3306->3306/tcp                
laradock_nginx_1              nginx                           Up      0.0.0.0:443->443/tcp,                 
                                                                      0.0.0.0:80->80/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 

workspaceコンテナ接続

PHPフレームワークやCMSをインストールするため[ workspace ]コンテナに接続します。
[ root@98cc6b1b406d:/var/www# ]のような表示がされたら接続は成功です。

$ docker-compose exec workspace bash

PHPフレームワークやCMSをインストール

Laradockの準備ができたのでworkspaceコンテナにPHPフレームワークやCMSをインストールしていきます。例としてLaravelのみ紹介します。

Laravel設定

[ composer ]でインストールし、nginxの[ default.conf ]内のrootのpathを修正します。

# composer create-project laravel/laravel app-name --prefer-dist
$ exit

$ vi nginx/sites/default.conf
- root /var/www/public;
+ root /var/www/app-name/public;

$ docker-compose restart nginx

Laravelスタートページ表示

http://192.168.99.100/

migrationテスト

$ docker-compose exec workspace bash
# cd app-name
# vi .env
- DB_HOST=127.0.0.1
- DB_DATABASE=homestead
- DB_USERNAME=homestead
+ DB_HOST=mysql
+ DB_DATABASE=default
+ DB_USERNAME=default

# php artisan migrate:status
# php artisan migrate
参考
2no553
インターネットと自由を愛するマークアップエンジニア兼クラウドエンジニア。20代は教師目指して働いたり、ボランティアしたり色々やって、ニートからバックパッカーとして世界一周、その後に30歳で未経験からWebプログラマーに転職。中国移住を目指して神奈川から福岡に移住し、今、西を目指し中。人生は何事も気楽が一番!
https://ninolog.com/profile/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away