#はじめに
前回、DockerでApache、nginx、MySQLのコンテナ構築方法を紹介させていただいた。
『DockerでApache、nginx、MySQLを構築するシンプルな方法 』
※Docker完全初心者の方は↑を参考程度に確認すると良い。
今回はDockerでWordPressを構築する方法を記述したい。
動作環境
動作環境は自宅WindowsパソコンにDockerをインストールしている。
・自宅PC
・OS:Windows10
システム構成-コンテナは2つ
まず以下の2つに分けてコンテナを作成し、それぞれミドルウェアをインストールしていく。
①WordPress用コンテナ
・WordPress
・Apache
・PHP実行環境
②MySQL用コンテナ
・MySQL
WordPress構築手順
1.ネットワーク作成
Dockerでは普通にコンテナを作ると、コンテナ同士は通信できない。
「ネットワーク」というリソースを作成し、同じネットワークに所属させる必要がある。
■ネットワーク作成コマンド
docker network create wordpress-network
コマンドはdoceker network create ネットワーク名で作成できる。
「wordpress-network」に2つのコンテナを所属させていく。
■ネットワーク詳細確認
docker network inspect wordpress-network
docker network inspect <ネットワーク名>
<出力結果例>
> docker network inspect wordpress-network
[
{
"Name": "wordpress-network",
"Id": "286023ed2d2522ba69987ef342458633463783e6ca2f18fa1c350935855ef40a",
"Created": "2021-07-25T02:39:04.7728767Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
こんな感じ。
Docker内のネットワーク一覧を観たいなら
> docker network ls
NETWORK ID NAME DRIVER SCOPE
ae6193baa836 bridge bridge local
2935816942a2 host host local
d7965802ece4 none null local
286023ed2d25 wordpress-network bridge local
ネットワークを削除したいなら
docker network rm <ネットワーク名>
ネットワークを作成したら次にMySQL用コンテナを作成していく。
2.MySQLコンテナ作成(オプション9つ)
WordPress用のデータベースがないとWordを作成できないので、まずMySQLを作成する。
■MySQLコンテナの作成
docker run --name mysql-db01 -dit --net=wordpress-network -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress-db1 -e MYSQL_USER=testuser -e MYSQL_PASSWORD=password mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
<オプション説明>
--name =コンテナ名
-dit =バックグラウンド実行
-net =ネットワーク名
-e MYSQL_ROOT_PASSWORD =rootユーザのパスワード
MYSQL_DATABASE =データベース領域名
MYSQL_USER =mysqlユーザ名
-e MYSQL_PASSWORD =mysqlユーザのパスワード
mysql イメージ名
--character-set-server 文字コード
--collation-server 照合順序指定
--default-authentication-plugin 認証方式 (MySQL8.0からデフォルトの認証方式が変更されたが、まだ古い認証方式の方が対応しているので、古い方を指定)
■作成結果例
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9bfad82ef88e mysql "docker-entrypoint.s…" 8 seconds ago Up 6 seconds 3306/tcp, 33060/tcp mysql-db01
mysql-db01というコンテナが作成された。
3.WordPressコンテナを作成
最後にWordPressコンテナを作成する。
注意点としては以下。
☆同じネットワークを指定する事
★データベースのコンテナ名、データベース領域名、ユーザ名、パスワードを、MySQLコンテナ作成時の値と同じにする。
■WordPressコンテナ作成
docker run --name wordpress01 -dit --net=wordpress-network -p 8085:80 -e WORDPRESS_DB_HOST=mysql-db01 -e WORDPRESS_DB_NAME=wordpress-db1 -e WORDPRESS_DB_USER=testuser -e WORDPRESS_DB_PASSWORD=password wordpress
<オプション説明>
--name=wordpressのコンテナ名
-dit=バックグラウンド実行
-net=ネットワーク名
-p ポート指定(ローカル:パブリック)
-e WORDPRESS_DB_HOST=データベースのコンテナ名
-e WORDPRESS_DB_NAME=データベース領域名
-e WORDPRESS_DB_USER=データベースのユーザ名
-e WORDPRESS_DB_PASSWORD=データベースユーザのパスワード
wordpress イメージ名
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
087da6ef9f10 wordpress "docker-entrypoint.s…" 2 seconds ago Up 2 seconds 0.0.0.0:8085->80/tcp, :::8085->80/tcp wordpress01
wordpress01というコンテナが作成された。
4.接続確認
WordPressコンテナまで作成できたら、WordPress作成時に指定したポートで、ブラウザアクセスしてみよう。
http://localhost:8085/
最後に
いかがでしたでしょうか。
ネットワークの作成、WordPressのインストールが簡単にできました。
次回は「ボリュームマウントの方法」をお伝えしようと思います。