XAMPPみたいな開発環境が欲しい!からの「Docker」入門
難しいことはわかりません。 ただWordpressの為の開発(テスト)環境が欲しい。だけの、おばちゃんです。
以前の記事「XAMPPが壊れていたのでNode.jsでテストサーバしてみた」当時、簡単に開発(テスト)環境できる!と思ったのですが、実際Wordpressの開発環境を作るとしたら、なんらかの方法でMysqlを繋げなくてはならないことに気づきました。そんな難しそうなこと、おばちゃん出来ない・・・。
やっぱりXAMPPですかね。ということで、ひさしぶりに開発環境まわりを調べてみました。すると、割と多く目にする「Docker」の文字。
どっかー? 何やらわからないですが、よくよく見るとクジラの絵。あ、これ見たことある。カワイイなあと思ってたのだ。よし、これに決めた!(ロゴって大事)
おばちゃんは、いわゆるアーリーアダプターと言われる人ではなく、2周も3周も遅れているので、おばちゃんが動く頃には大抵「ここをクリック」なインストーラーが用意されているものです。
案の定、Dockerにも「Docker Desktop for Mac」がありました。有難い。早速インストールです。
インストールは簡単。他のアプリケーション同様です。さて、XAMPPにあった操作ボタン的なものは何処かしら? あ、あれ、あぐぐぐ、もしかして・・・無い。
どうしよう。やっぱりXAMPPに戻ろうか。いや、ここはグッとこらえてDockerの使い方を調べます。
雰囲気としては、任意の作業フォルダを作成し、その中にNode.jsのpackage.jsonファイルみたいな、docker-compose.ymlファイルを作成し、使いたいアプリ(WordpressとかMysqlとか)の記述をしていく方法のようです。
まさにコレ。上記サイトのコレですね。私が書くべき(丸コピペ)記述はたぶんコレ。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
よし、では「npm run」ならぬ、「docker-compose up –d」します。
おおーっ! ブラウザで http://localhost:8000 を開くと見慣れたWordpressのインストール画面が表示されました。思ったより上手くいきそう。早速、運用中の独自テーマとデータベースのsqlファイルを入れて・・・
・・・あ、あれ、あぐぐぐ、 Wordpressの管理画面からテーマを入れようとしましたが、エラーが出てアップすることができません。そして、おばちゃんはphpMyAdmin使わないとデータベースいじれない人だった。
どうしよう。やっぱりXAMPPに戻ろうか。いや、いや、ここはグッとこらえてDockerの使い方をさらに調べます。
雰囲気としては、Wordpressとsqlファイルの「永続化」、phpMyAdminを今あるコピペ docker-compose.ymlに追加記述でなんとかなりそうです。
で、
記述を書き換えては「docker-compose up –d」→失敗→「 docker-compose down」
記述を書き換えては「docker-compose up –d」→失敗→「 docker-compose down」
を、繰り返して丸々1週間。ようやく辿り着いた記述はあっさりしたものでした。
2021.1.21追記「データベースについて」
後日、自分自身が以下の内容で環境を作ってみたところ、運用中のデータベースをWordpressに繋げることができませんでした。試行錯誤していた時には色々チャレンジしていたため、どのようにしてできたのか、今のところわかっておりません。
新規のWordpressのインストールとデータベースの作成、運用中のテーマを反映することはできます。その点は参考にしていただけるかと思いますので、ご了承の上、以下お読みください。(平謝り)
version: '3'
services:
db:
image: mysql:5.7
ports: #なんとなく追加
- "3306" #なんとなく追加
volumes:
- db_data:/var/lib/mysql
#永続化のために追加(作業フォルダ内に作成したdbフォルダにdb.sql入れてます)
- ./db/db.sql:/docker-entrypoint-initdb.d/db.sql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress
ports:
- "8000:80"
restart: always
volumes: #永続化のために追加
- ./wordpress:/var/www/html #永続化のために追加
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress #追加
phpmyadmin: #phpMyAdminを使うために、ここから〜〜〜
depends_on:
- db
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
restart: always
environment:
PMA_HOST: db:3306 #〜〜〜ここまで追加
volumes:
db_data:
途中でわかったことですが、新規ではなく、運用中の独自テーマとデータベースを反映させたい場合、運用中のwp-config.phpの$table_prefixの値が「wp_」であれば、Wordpressがデータベースを読みにいってくれますが、おばちゃんのように「xx_」とかの場合、データベースを読むことができないです。
対応したことは、一度、仮のユーザ名とパスワードでWordpressをインストールして、docker-compose down。次に、作業フォルダ内にできた wp-config.phpの$table_prefixの値を、運用中の値に変更しました。(ついでに、この時点で運用中の独自テーマもコピペして置きました。)
再度、docker-compose up –dで立ち上げ、ブラウザで http://localhost:8000 を開き、運用中のユーザ名とパスワードで管理画面に入ることができたら、データベースの記事が読み込まれているかを確認。OKそうだったら、サイトを表示させて運用中のテーマと記事が反映されていたら、万歳です。(長かった・・・感涙)
(追記)このやり方だと、インストール時に「wp_」が付いたデータベースが出来てしまいます。「xx_」のみ使用するつもりなので http://localhost:8080 からphpMyAdmin を開いて「wp_」は削除しました。
本日のオチ
Wordpress公式にあった・・・公式に・・・(気絶)
本日はこれにて。