MacOSのDockerで「WordPress+mysql」を運用する方法を紹介します。
WordPressをmacOSのDocker上で構築する方法
過去の記事で仮想環境プラットフォーム「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」のイメージをダウンロードします。
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
次に、doker-compose用の設定ファイルを作成します。
設定内容は以下の基本設計になります。
- images名:mysql:5.7
- volume名:db
- コンテナ名:db-container
- port番号:3306→5432 既存のポート番号とのバッティングを防ぐために5432にしておきます。
- ホスト側への保存フォルダ:~/db (コンテナ側のフォルダ/var/lib/mysql)
- images名:wordpress:latest
- volume名:wordpress
- コンテナ名:wordpress-app
- port番号:80→8080
- ホスト側への保存フォルダ:~/wordpress (コンテナ側のフォルダ/var/www/html)
以下設定ファイル
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 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
まとめ
本記事のまとめは、
macOSではmySQL(v5.7)とWordPress 6.1.1.で問題なくWordPressが立ち上がり利用できます。
関連リンク
