LoginSignup
12
12

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-07

初めまして。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
参考
12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12