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
まとめ
macOS上でDockerを使ったWordPressとMySQLの環境構築は、M1チップ特有の問題にも対応しつつ、簡単に行うことが可能です。以下の3つのポイントを押さえておけば、初心者でもスムーズにセットアップができます。
- M1チップ対応の設定:
platform
オプションの設定が重要 - docker-composeの利用: コンテナ間の連携をスムーズに行うための設定がカギ
- トラブルシューティングのコツ: データベース接続のエラー回避方法
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント