2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Docker]WordPress+MySQL環境を構築してみた。

Last updated at Posted at 2022-03-25

はじめに

何番目か煎じだとは思いますが、備忘録です。
dockerの勉強として、wordpress、mysqlのコンテナを1つずつ作成し、ネットワークで接続してみました。
ApachとPHPは、wordpressのイメージに始めから入っているため、別途作成はしません。

なお、当記事の内容はこちらの書籍のアウトプット学習となっています。

実行環境
・windows10
・Docker Desktop for Windows(WSL2)
・コマンドプロンプトで実行

上述の環境で実行していますが、実行内容にwindows固有のものはありません。

参考書籍

docker入門の定番書です。大変分かり易く内容もするするっと入ってきます。
寝落ちもしない!(当社比)

冒頭にも書きましたが、この記事は上述の書籍のChapter5を実際にハンズオンしてみた内容となっています。
当記事では省いたdockerのインストール方法など、初歩の初歩からkubernetesまでとっても分かり易く説明されています。
気になる方は是非! 

手順

手順は以下となります。

順番 内容
1. ネットワークの作成
2. MySQLコンテナの作成
3. WordPressコンテナの作成
4. ブラウザにアクセスして確認
5. 作成した環境の削除

任意の文字列なので、リソース名はご自由に設定して下さい。

リソース リソース名
ネットワーク wordpress000net1
MySQLコンテナ mysql000ex1
wordpressコンテナ wordpress000ex1

前置きが長くなりましたが、それでは実際に作成してみます。

1. ネットワークの作成

コンテナをただ作成しただけでは、コンテナ同士でやり取りを行うことができません。
そのため、wordpressコンテナとmysqlコンテナを接続する、仮想のネットワークを作成します。
ネットワークの作成には、network系コマンドを使用します。

というわけで、wordpress000net1という名前のネットワークを作成します。

# wordpress000net1という名前のネットワークを作成。
$ docker network create wordpress000net1 

# 上手く作成できたのか、ネットワーク一覧の表示で確認。
$ docker network ls

# こんな感じの結果が返ってくる(上の3つはデフォルトネットワーク)。
NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                null
cf03ee007fb4        host                host
23b2bf8c8a01        wordpress000net1    bridge    

これでネットワークの作成は完了です。

2. MySQLコンテナの作成

dockerhubのイメージから、mysqlコンテナを作成します。

以下の結構な長さのrunコマンドを入力します。

docker run --name mysql000ex1 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password

9つのオプションと3つのmysqlコンテナ固有の引数で構成されています。

オプション

項目 内容 入力した値
--name 作成するコンテナ名 mysql000ex1
-dit d,i,tオプションの集合。dはバックグラウンドで実行。iはコンテナに操作端末(キーボード)をつなぐ。tは特殊キーを使用可能にする。 なし
--net 使用するネットワークの選択。 wordpress000net1
-e MYSQL_ROOT_PASSWORD mysqlのルートパスワード myrootpass
-e MYSQL_DATABASE 作成するデータベースの実物名 wordpress000db
-e MYSQL_USER mysqlのユーザー名 wordpress000kun
-e MYSQL_PASSWORD mysqlのパスワード wkunpass

引数

項目 内容 入力した値
--character-set-server 文字コードの変更。この場合はUTF8。 utf8mb4
--collation-server 照合順序の変更。この場合はUTF8。 utf8mb4_unicode_ci
--default-authentication-plugin 認証方式の変更。 mysql_native_password

上2つは、mysqlで日本語を使えるようにする設定です。
「照合順序とはなんぞや?」という向きはこちらの記事などが参考になります。

参考
照合順序(SQL Server
【MySQL】照合順序とは?

残る1つの引数はwordpressからmysqlへ接続する認証方式を古いものに変更しています。
mysql8.0からの認証方式であるcaching_sha2_passwordに、wordpressは対応していません。
そのため、mysql5.7のデフォルト認証プラグインである、mysql_native_passwordに変更します。

これでmysqlコンテナの作成は完了です。
ちゃんと作成されているのか確認してみます。

# 起動中のコンテナの一覧表示。
$ docker ps

# 結果
CONTAINER ID   IMAGE   COMMAND 
d020c741fba2   mysql   "docker-entrypoint.s…"

3. WordPressコンテナの作成

mysql同様、dockerhubのイメージからwordpressコンテナを作成します。
apachとphpもこのイメージに含まれていますが、それらを弄るといったことはしません。

これまた結構な長さのrunコマンドで作成します。

docker run --name wordpress000ex1 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex1 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress

10個のオプションから構成されています。なお、引数は使用していません。
-eが頭につくオプションでは、連携するmysqlの値を入力しています。
先程作成したmysqlコンテナのことですね。

オプション

項目 内容 入力した値
--name 作成するコンテナ名 wordpress000ex1
-dit d,i,tオプションの集合。dはバックグラウンドで実行。iはコンテナに操作端末(キーボード)をつなぐ。tは特殊キーを使用可能にする。 なし
--net 使用するネットワークの選択。 wordpress000net1
-p ポート番号の指定。左辺が物理的マシンのポート番号、右辺がコンテナのポート番号。コンテナ側で外部の通信を許可していても、マシン側で許可していなければ外部から接続することができない。そのため両者を結びつける必要がある。コンテナのポート番号は固定だが、マシン側は任意の数字。 8085:80
-e WORDPRESS_DB_HOST 連携するデータベースのコンテナ名。 mysql000ex1
-e WORDPRESS_DB_NAME 連携するデータベースの実物名。 wordpress000db
-e WORDPRESS_DB_USER 連携するデータベースのユーザー名。 wordpress000kun
-e WORDPRESS_DB_PASSWORD 連携するデータベースのパスワード。 wkunpass

これでwordpressコンテナの作成は完了です。

# 起動中のコンテナの一覧表示。
$ docker ps

# 結果
CONTAINER ID   IMAGE       COMMAND
52e8cecffa13   wordpress   "docker-entrypoint.s…"
d020c741fba2   mysql       "docker-entrypoint.s…"

作成するものは全て作成しました。
動くのか実際に確認してみます。

5. ブラウザにアクセスして確認

chromeなどのブラウザでhttp://localhost:8085/にアクセスします。
80番ポートなのでhttpです。うっかりhttpsにしないよう気をつけます。

成功すれば、以下のwordpressの初期画面が表示されます。
ログインすればwordpressを使うこともできます。すごい。

wordpress.png

6. 作成した環境の削除

「コンテナいらないよ」という場合はさっさと作った環境を削除します。
削除するのにも順番があります。
コンテナは、一旦停止させてからでないと、削除することができません。
イメージは、当該イメージから作成したコンテナが存在する場合は削除することができません。
ネットワークは、連携したコンテナが存在する場合は削除することができません。

# コンテナの停止
$ docker stop wordpress000ex1
$ docker stop mysql000ex1

# コンテナの削除
$ docker rm wordpress000ex1
$ docker rm mysql000ex1

# イメージの削除
$ docker image rm wordpress
$ docker image rm mysql

# ネットワークの削除 
$ docker network rm wordpress000net1  

作成した環境は綺麗さっぱり消えました!
当記事の内容はこれでおしまいです。
ここまでお疲れさまでした。

おわりに

ほんと今更だけど、docker便利。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?