DockerでWORDPRESSを導入する際のDataBaseバージョン(MySQL or Mariadb)要注意。
2019年8月22日Linux Tips, Wordpress, wordpressテクニカル, トピックス, ノウハウ
昨今、大人気のDockerですが、システムはもちろんのこと中でも教育用に使われる機会は多いのではないかと感じます。WORDPRESSやLinux、各種言語の環境を素早く整えるために便利だと感じます。
初心者だけではなく、ITの専門家でも幅広くやっている方と一つに特化してやっている方で別れると思います。特に言語系技術とサーバ系技術は一緒で考えがちですがスケールが大きくなってくるとサーバ技術をきちんと持っているかどうかの違いが生じてきます。
そんなとき言語系でやられている専門家の方はDockerを使うことでハードルがぐんと下がるのではないかと思います。
前フリは長くなってしまいましたが、インターネットの世界ではWORDPRESSやPHPといった環境は圧倒的にWEBアプリケーションの中では使用頻度が高いためDockerで使用する人も多いと思います。
ということで、実際にDockerでWORDPRESSを使って見ようと思いました。
1 2 3 4 5 6 7 8 9 10 11 |
# repositoryからイメージをダウンロード $ docker pull mariadb <ーーバージョン指定なきデフォルトはlatest $ docker pull wordpress <ーーバージョン指定なきデフォルトはlatest # ダウンロードimageの存在確認 $ docker images # コンテナーを作成しプロセス起動(上記のDocker Pullをしなくても勝手にダウンロードしてくれるが、学習上pullは認識したほうがいい) $ docker run --name mariadb -e MYSQL_ROOT_PASSWORD=testpass01 -d mariadb:latest $ docker run --name mysite --link mariadb:mysql -p 80:80 -e WORDPRESS_DB_PASSWORD=testpass01 -d wordpress |
※今回はMariadbでWORDPRESSを使用したため問題なくあっさりWORDPRESSのインストールができましたが、Mariadb/MySQLを使う場合はバージョンをLatestバージョンにしてしまうと間違いなくハマります。環境による違いもあるのでDBエラーコネクションが表示される場合は以下のMySQL5.7.xをオススメします。
この原因はMySQLのバージョンがLatestだとVersion 8になってしまいWORDPRESSとのインターフェイスが取れなくなってしまうからです。ネットでもかなりVersion 8を無意識にインストールして接続できない問題で苦しんでいる方が多いようでした。この理由はcaching_sha2_passwordがMySQL8のデフォルト認証プラグインに変更された事が原因です。
どうしても、MySQL8で対処したい方はmy.cnfでデフォルト認証プラグインを変更してDocker imageへコミットの上、再度コンテナ作成が必要です。
旧来の認証プラグインを使うように変更(変更後MySQL再起動が必要)
1 2 |
[mysqld] default_authentication_plugin=mysql_native_password |
WORDPRESSで使う場合はMySQLのバージョンを5.7.xがよろしいと思います。下記のような感じで バージョン指定します。
【MySQLで接続する場合】
1 2 3 |
$ docker pull mysql:5.7.27 $ docker run --name mysql5.7.27 -e MYSQL_ROOT_PASSWORD=testpass01 -d mysql:5.7.27 $ docker run --name mysite --link mysql5.7.27:mysql -p 80:80 -e WORDPRESS_DB_PASSWORD=testpass01 -d wordpress |
もし、様々な問題が生じたらやはりアプリ環境へログインして分析することが大切!
【デバッグは環境にログインしてアプリの設定を確認しよう】
123456789
#コンテナーの状況を確認します$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe992f068afdd wordpress "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp mysite6d155f322e94 mariadb:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp mariadb2e39e4c80e61 jonadev95/kitematic-docker "/bin/sh -c 'bash /e…" 4 hours ago Up 2 hours kitematic # 該当アプリの環境(シェル)へ接続します。この例ではmariadbへ接続します。コンテナーIDをステータスから拾い接続します。$ docker exec -it 6d155f322e94 bash
1 2 3 4 5 6 7 8 9 |
#コンテナーの状況を確認します $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e992f068afdd wordpress "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp mysite 6d155f322e94 mariadb:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp mariadb 2e39e4c80e61 jonadev95/kitematic-docker "/bin/sh -c 'bash /e…" 4 hours ago Up 2 hours kitematic # 該当アプリの環境(シェル)へ接続します。この例ではmariadbへ接続します。コンテナーIDをステータスから拾い接続します。 $ docker exec -it 6d155f322e94 bash |