見出し画像

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公式にあった・・・公式に・・・(気絶)

本日はこれにて。


WEBデザイナー(自営業)のおばちゃんです。最近はBlenderネタ多めです。