macOS上でのDocker活用!WordPress+MySQL運用ガイド

DOCKER
この記事は 2 分で読めます。
概要

macOS上でDockerを使って、WordPressとMySQLを簡単にセットアップする方法を詳しく解説します。初心者向けに、具体的な手順と注意点を含めて、環境構築からトラブルシューティングまで分かりやすく説明します。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • 小規模ビジネスオーナーやウェブサイト運営者
  • ITスタートアップで技術導入を検討しているエンジニア
  • DockerとWordPressの運用に興味がある技術マネージャー
目次

macOSでのDocker導入:WordPress運用の基本

Dockerは仮想化技術の一つで、macOS環境でも手軽にWordPressとMySQLを使ったウェブサイト運用が可能です。本記事では、Dockerの導入やコンテナ構築の基礎を押さえつつ、macOS上での具体的な環境設定について説明します。

過去の記事で仮想環境プラットフォーム「Docker」(Docker desktop for mac)をMacOSにインストール方法を紹介しました。

本記事では既に以下の記事に記載されている「Docker desktop for mac」がインストールされている前提で話しを進めて行きます。

■「Docker desktop for mac」をmacOSにインストールする方法を知りたい方は以下の記事をご参照ください。

■Dockerで「WordPress」をLinux ubuntuにインストールする方法を知りたい方は以下の記事をご参照ください。

Dockerで利用するデーターベースはmysqlを利用します。

本記事の使用環境

使用環境

  • Docker Desktop for mac (M1チップ搭載mac):バージョン 20.21
  • WordPress image:バージョン 6.1.1 (latest)
  • MySQL image:バージョン5.7

本記事では、Dockerを利用して「wordpress+mysql」をmacOS上で構築する方法を示します。

mySQLとWordPressのイメージのダウンロード

以下のDocker hubの公式イメージから「mysql」と「wordpress」のイメージをダウンロードします。

MySQL公式イメージ: https://hub.docker.com/_/mysql
WordPress公式イメージ: https://hub.docker.com/_/wordpress

macOSのターミナル上から以下のdocker pullコマンドを実行して、Dockerのイメージをダウンロードできます。

% docker pull mysql
% docker pull wordpress

必要なイメージがダウンロードされているか以下のように確認します。(nextcloudは前回ダウンロードしたものです。)

% docker images
REPOSITORY          TAG       IMAGE ID       CREATED       SIZE
mysql               latest    7b6f3978ca29   4 days ago    550MB
docker101tutorial   latest    daf03c34a1e1   11 days ago   28.4MB
mysql               <none>    e8ff7e619492   12 days ago   550MB
nextcloud           latest    0541d48c4009   12 days ago   947MB
alpine/git          latest    9793ee61fc75   3 weeks ago   43.4MB

docker psコマンドで実行中のコンテナがあるか確認してみます。

コンテナが実行中であれば「docker stop」コマンドと「dockor rm」コマンドを利用してすべてのコンテナを削除して置いて下さい。mysqlなどのポートの重複があるとエラーがでてしまうためです。ポートの重複については後述します。

% docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

docker-composeのyml設定ファイルの確認

次に、doker-compose用の設定ファイルを作成します。

設定内容は以下の基本設計になります。

(1) mySQL
images名:mysql:5.7
volume名:db
コンテナ名:db-container
port番号:3306→5432 既存のポート番号とのバッティングを防ぐために5432にしておきます。
ホスト側への保存フォルダ:~/db (コンテナ側のフォルダ/var/lib/mysql)
(2) wordpress
images名:wordpress:latest
volume名:wordpress
コンテナ名:wordpress-app
port番号:80→8080
ホスト側への保存フォルダ:~/wordpress (コンテナ側のフォルダ/var/www/html)

M1 macのための「mysqlのイメージ」の注意点
(1) M1 macOSの場合、
mysql:latestのイメージではwordpressからmysqlへアクセスができない。
このため、本記事ではmysql: 5.7のイメージを利用します。公式のDocker hubも他のページも確認してみましたが、皆タグ「5.7」を利用していました。
(2) M1 macOS の場合、
「-platform=linux/x86_64」を利用する。arm64のプラットフォームではDocker Hubのイメージをダウンロードする際にエラーがでます。この宣言をしておかないとmysql:5.7のイメージをダウンロードすらできない。

以下設定ファイル

version: '3'
volumes:
 db:
 wordpress:

services:
 db:
  restart: always
  image: mysql
 platform: linux/x86_64
  container_name: db-container
  ports:
   - 5432:3306
  expose:
   - 5432
  volumes:
   - ./db:/var/lib/mysql
  environment:
   - MYSQL_ROOT_PASSWORD=rootpass
   - MYSQL_PASSWORD=userpass
   - MYSQL_DATABASE=wordpress
   - MYSQL_USER=wordpress

 wordpress:
  restart: always
  container_name: wordpress-app
  image: wordpress
  volumes:
   - ./wordpress:/var/www/html
  ports:
   - 8080:80
  depends_on:
  - db
  environment:
  - WORDPRESS_DB_PASSWORD=userpass
  - WORDPRESS_DB_NAME=wordpress
  - WORDPRESS_DB_USER=wordpress
  - WORDPRESS_DB_HOST=db:5432

(1)既存のmysqlのポート番号3306は本体サーバー上で使用されているため、ポート番号5432を使用する。

mysqlのデータベース側「ports: 5432:3306」として、外部通信「expose: 5432」で宣言します。

   wordpress側でポート番号5432を利用したmysqlをりようするため環境変数を[WORDPRESS_DB_HOST=db:5432」

とします。

(2) webページへアクセスする際に「error establishing a database connection」と出る場合があります。この場合、過去のデーターフォルダが残っている場合があるため、接続用の設定ファイルがある/dbや/wordpress内を削除して再度起動させるとうまく行きます。

コンテナ化

「docker-compose」コマンド

最終的に、以下のコマンド「docker-compose up -d」を入力してバックグラウンドでスタートして終了です。

ここで、エラーがでないか「docker-compose up 」としてフォアグラウンド処理で確認してみるのも良いかと思います。

% docker-compose up -d
[+] Running 3/3
 ⠿ Volume "user_app"  Created                                                                                              0.0s
 ⠿ Container wordpress-app      Started                                                                                              0.3s
 ⠿ Container mysql-container    Started

動いているか確認のため、Docker-compose psコマンドでのコンテナ実行状況を確認すると2つのコンテナのSTATUSが「running」状態であることを確認できます。

 sudo docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
db-container        "docker-entrypoint.s…"   db                  running             0.0.0.0:5432->3306/tcp, :::5432->3306/tcp
wordpress-app       "docker-entrypoint.s…"   wordpress           running             0.0.0.0:8080->80/tcp, :::8080->80/tcp

その後、適当なSafariなどのブラウザ上のURLへ「http://localhost:8080」を入力すると以下のようにwordpressが起動します。

何か問題が起こった場合には、データベースの設定に問題がある場合が多いため再度パスワード等を確認してみてください。

必要であれば、コンテナイメージに入って修正もできます。

ブラウザ上からアクセス

macOSのSafari等のブラウザから「http://localhost:8080」としてアクセスすると下記のように立ち上がります。

(dockerが動いていても、すぐにアクセス使用とすると初期設定が完了していないのか、アクセスできないこともあります。動かないとあきらめずに、30秒ぐらい十分時間がたってからブラウザへアクセスしてみてください。)

「日本語」を選択後、「Continue」ボタンを押すことで、下記のデータベースの設定画面が表示されます。

特に、「データーベース名」(WordPress)と「ユーザー名/パスワード」(WordPress/userpass)はmySQLで以下のように登録してあり、docker-composeのymlファイルにも反映されていますが、再度、必ず確認下さい。

  • WORDPRESS_DB_NAME=wordpress
  • WORDPRESS_DB_PASSWORD=userpass
  • WORDPRESS_DB_USER=wordpress
  • WORDPRESS_DB_HOST=db:5432

何か問題が発生する場合には、以下のデーターベースのコネクションエラーが発生することがあります。

これは、mysqlとのコミュニケーションで問題がおこっているため以下の点を確認ください。

(1)「データベース名」・「ユーザー名」・「データーベースのホスト名」・「パスワード」に間違いがないか。

(2) docker composeに書かれたホスト側のvolumesフォルダを一度消して再度実行してみてください。

(3)mysqlのポート番号を替えて見て下さい。

以上でも、接続できないエラーがでているような場合は、一度もどって、ステップを踏んでアクセスしてみるようにしてください。

更に一般的なWordPressの詳細な初期設定画面の登録ならびに、良くおこるトラブルに関しては以下の記事を参照ください。

Docker composeの停止

Composeの停止は以下のコマンドでできます。このとき、networkと2つのコンテナが停止します。

ファイルを指定してdocker composeを行っているため、終了時も -f (ファイル名)を加えてdownする。

% docker-compose -f docker-compose1.yml down
[+] Running 3/3
 ⠿ Container wordpress-app         Removed                                                                                                     1.2s
 ⠿ Container db-container          Removed                                                                                                     1.4s
 ⠿ Network user_default  Removed

まとめ

本記事のまとめ
  • M1チップ対応の設定: platformオプションの設定が重要
  • docker-composeの利用: コンテナ間の連携をスムーズに行うための設定がカギ
  • トラブルシューティングのコツ: データベース接続のエラー回避方法

次回の記事をご期待下さい。どうぞよろしくお願いいたします。

関連リンク

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

コメント

コメントする

目次