【Mac】dockerでWordPressを構築

目次

はじめに

Web制作の現場では以前からDockerを使われてる方々が多くいましたが、遅ればせながら、この度私もMAMPからDockerへ移行を始めました!

\Docker先生よろしくお願いします!!/

そこで今回は、手始めにWordPressの環境を構築していきます。

その他に、Laravel 9.xとEC-CUBEの環境構築も今後書く予定ですので、よろしければそちらもよろしくお願いします。

ちなみに今回も初心者さんでも分かるよう心掛けますので、分かりにくいところがあればご連絡ください!

あわせて読みたい
Docker + Laravelで顧客管理を作る②【基本設定編】 https://kuro-suke.com/prod/1459/embed/#?secret=tMRexugGGl https://kuro-suke.com/prod/1514/embed/#?secret=rQjn4grGH1 【はじめに】 前回のDocker + Laravelで顧客...

Dockerとは

そもそもDockerとは、PCのOS上に仮想の実行環境(コンテナ)を構築し、サーバーやOSを実行することができ、MAMPと似たようなもの、と捉えればいいと思います。

ただし、実際はMAMPなどとはまったくの別物ですので、詳しく知りたい方は「docker とは」とググってみてください。

Web制作の現場では基本的に、本番環境と同じサーバー環境を構築するのに使います。

MAMPではプロ版にしても、細かいところまでは実環境に揃えられないということがありますが、Dockerではそんな痒いところまで対応できます。

しかもプロジェクト(サイト)ごとに再現する機能やPHPのバージョンなどを細かく指定でき、設定ファイルさえあれば簡単に実行環境(ここでは実環境を再現したコンテナ)の再構築、複製ができるのです。

私も最初は「何を言ってるんだ?」と理解が追いつきませんでしたが、実際に使ってみるとすぐにその柔軟性に魅せられてしまいました。

以前の記事(MAMPのバーチャルホストで複数プロジェクト管理)では複数プロジェクトを用意するたびにファイルを開いて設定を追加しないといけないうえ、何のプロジェクトが稼働できるのかひと目では分からないという面倒なものでした。Dockerはプロジェクトごとに設定ファイルを用意でき、さらにはDocker Desktopというアプリを使えば何のプロジェクトが存在するのかひと目で分かります。

Docker Desktopとは

簡単に言うと、ターミナル(コマンド)で操作しないといけないところを、GUIにより直感的に操作しやすくしてくれた便利アプリです。

つまり、管理が煩雑にならず非常に楽です。

さて、Dockerの話はこのくらいにして、さっそく実行環境(コンテナ)を作っていきましょう。

環境構築

Dockerをインストール

まずは少しでもDockerの難易度を下げるため、先に少しだけ出てきたDocker Desktopのインストーラーを本家よりダウンロードし、インストールします。

Docker Desktopのダウンロード画面
Docker Documentation
Mac Install Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.

このアプリにはGitで公開されているDocker本体等が含まれているので、ターミナルでインストールする必要がなくて楽です。

インストールができたら、アプリをさっそく起動してみましょう。

Docker Desktopの起動画面

Dockerは本来コマンドを打って操作しますので、ターミナルからも見ることができます。

ターミナルを起動したら、$ docker versionと打ち込んで実行してみてください。

以下の様な結果が返って来れば、正しくインストールされてます。

$ docker version

Client:
 Cloud integration: v1.0.28
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:04:45 2022
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true

Server: Docker Desktop 4.11.1 (84025)
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       ▲▲▲▲▲▲▲▲
  Built:            Mon Jun  6 23:01:23 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

コンテナ、イメージの違いについて

さて、ここでちょっと脱線しますが、Dockerについて調べると、コンテナイメージという2つの用語について解説された記事がたくさん上がってきます。

簡単に解説しますが、「イメージとはMariaDBやApacheなど各動作環境のテンプレートで、テンプレートごとに個別に設定したものをコンテナ」と呼びます。

よく勘違いしやすいのが、「複数のイメージをまとめたものをコンテナ」と呼ぶことです。

これはコンテナではなく、謂わばコンテナズ(複数形)です。

このあたりについては後半のdocker-compose.ymlの中身の解説で説明していますので、後ほどご覧ください。

あわせて読みたい
docker-compose.ymlの解説 【はじめに】 さて、こちらの記事は前回の【Mac】dockerでWordPressを構築内で案内していた、docker-compose.ymlの書き方についての解説記事です。 Docker初心者には特...

この記事ではWordPress用のコンテナを作るので、最低限でもPHPWordPressのイメージが必要ですが、データベースの中身を見たり編集したりすることがあるので、phpmyadminも追加しようと思います。

docker-compose.yml(設定ファイル)を作る

さて、ここで初めて出てきたdocker-compose.ymlですが、これはコンテナで使用するイメージと、コンテナ自身の設定をまとめた設定ファイルです。

このファイルを1つ作っておけば、他のWordPressのプロジェクトを作る際も、docker-compose.ymlを複製することで簡単に同じ環境を構築することができます。

ではまず、任意の場所にプロジェクトフォルダを用意したら、ターミナルでプロジェクトフォルダへ移動してください。

今回はサンプルとして、/user/ユーザー名wp-dockerというプロジェクトフォルダを用意して環境を構築していきます。

移動は$ cd wp-dockerでできます。

ターミナルでwp-dockerへ移動したら、$ touch docker-compose.ymlを実行してdocker-compose.ymlを作成します。

ファイルが作成されたら、続けて以下の内容をdocker-compose.ymlへ貼り付けて保存します。

version: "3.3"

services:
  db:
    image: mysql:8.0
    container_name: wp_db_docker
    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:6.0.1
    container_name: wp_docker
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes: 
      - "$PWD:/var/www/html"
      - "$PWD/.docker/backup:/tmp/backup"
      - "$PWD/.docker/log:/tmp/log"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - db
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=db
      - PMA_USER=wordpress
      - PMA_PASSWORD=wordpress
    ports:
      - "8001:80"
    volumes:
      - ./docker/phpmyadmin/sessions:/sessions

volumes:
  db_data: {}

これでdocker-compose.ymlの用意が完了しました。

docker-compose.ymlの中身の解説

この後はコマンド1つ叩くだけで終わるのですが、その前に先程作ったdocker-compose.ymlの中身を解説した記事を用意していますので、是非そちらもご覧ください。

docker-compose.ymlの書き方がある程度分かれば、オリジナル環境を構築しやすくなるはずです。

あわせて読みたい
docker-compose.ymlの解説 【はじめに】 さて、こちらの記事は前回の【Mac】dockerでWordPressを構築内で案内していた、docker-compose.ymlの書き方についての解説記事です。 Docker初心者には特...

コンテナを起動

さて、docker-compose.ymlを設定したので、最後にコンテナを実行します。

プロジェクトフォルダに移動していることを確認し、$ docker-compose up -dと実行してください。

コンテナを実行することで、CMSならWordPressやEC-CUBEなどのファイル郡をプロジェクトフォルダへインストールしてくれます。

処理にはダウンロードとインストールで少々時間がかかるので、気長に待ちましょう。

$ docker-compose up -d

# 以下、実行結果

Creating network "wp-docker_default" with the default driver
Creating volume "wp-docker_db_data" with default driver
Pulling db (mysql:8.0)...
8.0: Pulling from library/mysql
32c1bf40aba1: Pull complete
3ac22f3a638d: Pull complete
b1e7273ed05e: Pull complete
20be45a0c6ab: Pull complete
410a229693ff: Pull complete
1ce71e3a9b88: Pull complete
c93c823af05b: Pull complete
c6752c4d09c7: Pull complete
d7f2cfe3efcb: Pull complete
916f32cb0394: Pull complete
0d62a5f9a14f: Pull complete
Digest: sha256:ce2ae3bd3e9f001435c4671cf073d1d5ae55d138b16927268474fc54ba09ed79
Status: Downloaded newer image for mysql:8.0
Pulling wordpress (wordpress:6.0.1)...
6.0.1: Pulling from library/wordpress
1efc276f4ff9: Pull complete
3239fd0772e9: Pull complete
52ccb8ba6c06: Pull complete
e907707b68ee: Pull complete
f001901b2b66: Pull complete
3926f8e80674: Pull complete
abc6b8b3381c: Pull complete
f2aef5a590dd: Pull complete
4739a6591a8b: Pull complete
1c4c634ab8e6: Pull complete
d84f48c0548d: Pull complete
774f9d29e73c: Pull complete
06e87fefb4ab: Pull complete
382fb5566e86: Pull complete
b3b5294242c6: Pull complete
730f2c6e6033: Pull complete
019b868fd241: Pull complete
a217ccc0a4bc: Pull complete
8f70b51d2ae5: Pull complete
6c2fa69a7ed1: Pull complete
6a8eb3d78340: Pull complete
Digest: sha256:461fb4294c0b885e375c5d94521442fce329cc02ef3f49a8001ea342d14ab71a
Status: Downloaded newer image for wordpress:6.0.1
Creating wp_db_docker ... done
Creating wp_docker    ... done

最後にCreating コンテナ名 ... doneと表示されれば成功です。

ちゃんとDockerが起動したか確認する

最後にdoneと表示されたので、ブラウザでhttp://localhost:8000へアクセスしてみましょう。

WordPressのインストール画面が表示されていれば、成功です!

Error establishing a database connection が出た!?

WordPressやEC-CUBEなどを含んでいる場合、以下のようなエラーがたまに出ることがあります。

Error establishing a database connectionのエラー画面

そんなときは慌てず、エラー文をコピーしてグーグル先生に質問してみましょう。

この場合、エラーの内容は「データベースへの接続が失敗しました」という内容です。

つまり、データベースの指定先、またはIDやパスワードあたりが間違っていることが予想されます。

該当箇所を修正したら、$ dcoker-compose stopでコンテナを停止させ、プロジェクトフォルダ内に生成されたファイル郡(docker-compose.ymlを除く)を削除してから、再度$ docker-compose up -dを実行してください。

最後に

最後までお付き合いくださりありがとうございます。

こんな環境をDockerで再現してみたい!というようなご要望があれば、お気軽にお問い合わせください。

時間があればですが、環境を構築したdocker-compose.ymlを作って配布します。

※自己責任の元でご使用ください。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次