6
8

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 3 years have passed since last update.

DockerでWordPress環境を構築

Last updated at Posted at 2019-05-02

はじめに

本ページでは、
Dockerを用いてブログサイト作成用のOSS製品であるWordPress の実行環境を構築するハンズオンを通して、
Dockerの基本的な操作 と Dockerの利便性を学んでいただきます。

前提条件

  • ホストOS:CentOS 7
  • Dockerインストール済み
    ※未インストールの場合は、 こちら を参考にインストールしてください。

参考

こちら に よく使うDockerコマンドについてまとめていますので、ご参考ください。


それでは、WordPress環境を構築してみましょう

1. イメージファイルの準備

DockerHubからイメージファイルを取得します。
WordPress環境を構築するには、WordPressのDockerイメージに加えて、
DB用にMySQLのDockerイメージも必要です。

以下2つのDockerイメージを使用します。

はじめに docker search コマンドで、Dockerイメージを検索してみましょう。

$ docker search wordpress

NAME                                    DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
wordpress                               The WordPress rich content management system…   2940                [OK]                
bitnami/wordpress                       Bitnami Docker Image for WordPress              107                                     [OK]
appcontainers/wordpress                 Centos/Debian Based Customizable Wordpress C…   34                                      [OK]
etopian/alpine-php-wordpress            Alpine WordPress Nginx PHP-FPM WP-CLI           20                                      [OK]
centurylink/wordpress                   Wordpress image with MySQL removed.             14                                      [OK]
・・・

検索結果が表示されました。
今回は OFFICIAL イメージである、wordpressという名前のDockerイメージを使用します。

同じく MySQL も検索してみましょう。

$ docker search mysql

NAME                                    DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                                   MySQL is a widely used, open-source relation…   8086                [OK]                
mariadb                                 MariaDB is a community-developed fork of MyS…   2740                [OK]                
mysql/mysql-server                      Optimized MySQL Server Docker images. Create…   604                                     [OK]
zabbix/zabbix-server-mysql              Zabbix Server with MySQL database support       188                                     [OK]
hypriot/rpi-mysql                       RPi-compatible Docker Image with Mysql          113                                     
・・・

こちらも検索結果が表示されました。
同じく OFFICIAL イメージである、mysqlという名前のDockerイメージを使用します。

それでは、この2つのDockerイメージを取得(Pull)していきます。
ここでは wordpress は 5.4.2 をtag指定します。
mysql は wordpress との連携確認済みの 5.7.21 をtag指定します。

$ docker pull mysql:5.7.21

5.7.21: Pulling from library/mysql
2a72cbf407d6: Pull complete 
38680a9b47a8: Pull complete 
4c732aa0eb1b: Pull complete 
c5317a34eddd: Pull complete 
f92be680366c: Pull complete 
e8ecd8bec5ab: Pull complete 
2a650284a6a8: Pull complete 
5b5108d08c6d: Pull complete 
beaff1261757: Pull complete 
c1a55c6375b5: Pull complete 
8181cde51c65: Pull complete 
Digest: sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c
Status: Downloaded newer image for mysql:5.7.21


$ docker pull wordpress:5.4.2

5.4.2: Pulling from library/wordpress
27833a3ba0a5: Pull complete 
2d79f6773a3c: Pull complete 
f5dd9a448b82: Pull complete 
95719e57e42b: Pull complete 
cc75e951030f: Pull complete 
78873f480bce: Pull complete 
1b14116a29a2: Pull complete 
887fc426d9b4: Pull complete 
e8a2a7e68e47: Pull complete 
44116bd4b499: Pull complete 
5a7ed133cf7c: Pull complete 
a0cc2e7ce3b9: Pull complete 
3ea943f2a6e6: Pull complete 
b7cbb4ae8469: Pull complete 
f1ee59d1627e: Pull complete 
480e816f1b42: Pull complete 
9803a14680f4: Pull complete 
a9d5149d7240: Pull complete 
7a162cc00537: Pull complete 
Digest: sha256:eb7fb32d7098153b586cb6c0c8c7fb3b9684c66ccff803734b0895e49210fe08
Status: Downloaded newer image for wordpress:5.4.2

取得したDockerイメージを docker images コマンドで確認してみましょう。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           5.4.2               837092bc87de        3 weeks ago         421MB
mysql               5.7.21              5195076672a7        13 months ago       371MB

Dockerイメージが取得できていることが確認できました。

2. Dockerコンテナの起動

イメージファイルから、コンテナを起動していきます。
まずは、MySQLコンテナを起動します。

$ docker run -d -it --name test-mysql -e MYSQL_ROOT_PASSWORD=password mysql:5.7.21

-d :コンテナをバックグラウンドでの実行するためのオプション
-it:コンテナに標準入力とTTY(端末デバイス)を提供するオプション
    →このオプションをつけると、コンテナにログインできるようになります。
--name:コンテナにユーザ指定の名前を付与するオプション。
      →ここでは、test-mysql という名前を付与しています。
-e:環境変数を定義するオプション
   →MySQLのパスワードとして 「password」を設定しています。

つづいて、WordPressコンテナを起動します。

$ docker run -d -it --name test-wordpress --link test-mysql:mysql -p 8080:80 wordpress:5.4.2

--link:複数のコンテナを連携するためのオプション
     →WordPressコンテナに、先ほど起動した test-mysql コンテナを紐づけています。
-p:ホストのIPをコンテナのIPとマッピングするためのオプション
   →コンテナのポート 80(HTTP)を、ホストのポート 8080 にマッピングしています。

起動したコンテナを docker ps コマンドで確認してみましょう。
-a オプションをつけることで、停止中のコンテナを含めてすべて表示します。

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
0482597eb65c        wordpress:5.4.2     "docker-entrypoint.s…"   4 seconds ago       Up 3 seconds        0.0.0.0:8080->80/tcp   test-wordpress
b3fe0d703916        mysql:5.7.21        "docker-entrypoint.s…"   12 minutes ago      Up About a minute   3306/tcp                test-mysql

wordpressコンテナと、mysqlコンテナが起動していることが確認できました。

3. WordPressコンテナに接続

ブラウザを起動して、http://<ホストのIPアドレス>:8080 にアクセスしてみましょう。

image.png
WordPress の初期画面が表示されました。
ここでは 日本語 を選択して、「続ける」 を押下してください。

image.png
つづいて、必要情報の入力を求められます。
サイトのタイトル、ユーザー名、パスワード、メールアドレス を入力してください。
※メールアドレスは、実在しないものでも構いません。

image.png
初期設定が完了しました。「ログイン」を押下してみましょう。

image.png
先ほど設定した、ユーザー名、パスワードを入力して「ログイン」を押下します。

image.png
WordPressが使用できるようになりました。
せっかくですので適当に触ってみてください。

image.png
WordPressでは、このようなブログサイトを簡単に作成することができます。

4. コンテナ操作

起動中のコンテナにログインするには、 docker exec コマンドを使用します。

docker exec は、コンテナ内で指定したコマンドを実行します。
ここでは、/bin/bashコマンドを起動することで bash ターミナルを起動し、
bashターミナルからコンテナ内の操作を行うことができるようになります。

$ docker exec -it test-wordpress /bin/bash

root@0482597eb65c:/var/www/html# ls -la

total 208
drwxrwxrwx.  5 www-data www-data  4096 May  2 13:54 .
drwxr-xr-x.  1 root     root        18 Mar 27 01:00 ..
-rw-r--r--.  1 www-data www-data   235 May  2 14:03 .htaccess
-rw-r--r--.  1 www-data www-data   420 Nov 30  2017 index.php
-rw-r--r--.  1 www-data www-data 19935 Jan  1 20:37 license.txt
-rw-r--r--.  1 www-data www-data  7425 Jan  9 02:56 readme.html
-rw-r--r--.  1 www-data www-data  6919 Jan 12 06:41 wp-activate.php
drwxr-xr-x.  9 www-data www-data  4096 Mar 13 00:18 wp-admin
-rw-r--r--.  1 www-data www-data   369 Nov 30  2017 wp-blog-header.php
-rw-r--r--.  1 www-data www-data  2283 Jan 21 01:34 wp-comments-post.php
-rw-r--r--.  1 www-data www-data  2808 May  2 13:54 wp-config-sample.php
-rw-r--r--.  1 www-data www-data  3176 May  2 13:54 wp-config.php
drwxr-xr-x.  7 www-data www-data    99 May  2 14:07 wp-content
-rw-r--r--.  1 www-data www-data  3847 Jan  9 08:37 wp-cron.php
drwxr-xr-x. 19 www-data www-data  8192 Mar 13 00:18 wp-includes
-rw-r--r--.  1 www-data www-data  2502 Jan 16 05:29 wp-links-opml.php
-rw-r--r--.  1 www-data www-data  3306 Nov 30  2017 wp-load.php
-rw-r--r--.  1 www-data www-data 38883 Jan 12 06:41 wp-login.php
-rw-r--r--.  1 www-data www-data  8403 Nov 30  2017 wp-mail.php
-rw-r--r--.  1 www-data www-data 17947 Jan 30 11:01 wp-settings.php
-rw-r--r--.  1 www-data www-data 31085 Jan 16 16:51 wp-signup.php
-rw-r--r--.  1 www-data www-data  4764 Nov 30  2017 wp-trackback.php
-rw-r--r--.  1 www-data www-data  3068 Aug 17  2018 xmlrpc.php

root@0482597eb65c:/var/www/html# cat index.php

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

コンテナからログアウトするには exit を入力します。

root@0482597eb65c:/var/www/html# exit
exit

コンテナを停止するには、docker stop コマンドを使用します。

$ docker stop test-wordpress

docker ps -a コマンドで、コンテナの状態を確認してみましょう。

$ docker ps -a
CONTAINER ID        IMAGE            COMMAND                  CREATED             STATUS                     PORTS                   NAMES
0482597eb65c        wordpress:5.4.2  "docker-entrypoint.s…"   33 minutes ago      Exited (0) 6 seconds ago                           test-wordpress
b3fe0d703916        mysql:5.7.21     "docker-entrypoint.s…"   45 minutes ago      Up 34 minutes              3306/tcp                test-mysql

test-wordpress コンテナが 停止(Exited(0))となっていることが確認できます。

image.png
ブラウザをリロードしてみると、
WordPressにアクセスできなくなっていることがわかります。

コンテナを再度起動するには、docker start コマンドを使用します。

$ docker start test-wordpress

docker ps -a コマンドで、コンテナの状態を確認してみましょう。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
0482597eb65c        wordpress:5.4.2     "docker-entrypoint.s…"   38 minutes ago      Up 4 seconds        0.0.0.0:8080->80/tcp   test-wordpress
b3fe0d703916        mysql:5.7.21        "docker-entrypoint.s…"   About an hour ago   Up 39 minutes       3306/tcp                test-mysql

test-wordpress コンテナが 起動(UP)していることが確認できます。

image.png
ブラウザをリロードしてみると、
再びWordPressにアクセスできるようになっていることがわかります。

5. 後片付け

起動したコンテナ、取得(Pull)したDockerイメージを削除しましょう。

まずは、コンテナを削除します。
コンテナを削除するには、docker stop コマンドでコンテナを停止したのち、
docker rm コマンドで、コンテナを削除します。

$ docker stop test-wordpress
$ docker stop test-mysql

$ docker rm test-wordpress
$ docker rm test-mysql

docker ps -a コマンドで、コンテナが削除されていることが確認できます。

$ docker ps -a
CONTAINER ID        IMAGE        COMMAND                  CREATE

つづいて、Docker イメージを削除します。
まずはdocker images コマンドで、Docker イメージ一覧を確認します。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           5.4.2               837092bc87de        3 weeks ago         421MB
mysql               5.7.21              5195076672a7        13 months ago       371MB

Docker イメージを削除するには、docker rmi コマンドを使用します。

$ docker rmi wordpress:5.4.2

Untagged: wordpress:5.4.2
Untagged: wordpress@sha256:eb7fb32d7098153b586cb6c0c8c7fb3b9684c66ccff803734b0895e49210fe08
Deleted: sha256:837092bc87def29cf6e40fbbe65dafee9715b5a64d32fc94aec7c73773805a29
Deleted: sha256:c76dd05c6fcb07bcda3b8d982978b7537f38f9b654649e69653c15fbfd1c20ee
Deleted: sha256:2c4f25a6cdd08288d1df7282f545b5e5b4530e5c236243a43ce593fd78f4bac4
Deleted: sha256:5df0a75e0c8651eaf6cb85dbb4c615b91792f9d26fe36c07fc014f267559bb0e
Deleted: sha256:d7db080c0d7ad12bb9d11917cad9d923c76a582766339099101c7925cbe30ef5
Deleted: sha256:cdd4986c7ffa5488603aef15a0d744c87ec7d3cef4071f9403a136df84f434a4
Deleted: sha256:de0022b247a256c3f5a2d6588bef354dadc81b08602763e94a000294ded1bc5d
Deleted: sha256:aa988a8f2b781c15509381977bc1f12df337537c83738bf67eae8bcc85d75827
Deleted: sha256:ba59a6f26aa22f6ef9f2a63bf5a51b3117fb22fb04f12c41bd952faf92c8b6e7
Deleted: sha256:47bdab2bb3d864d3a7a0962326932e38d927a7906dc6aacc57eb524f17ada731
Deleted: sha256:9ced8dd73fb478fb39612794f846211860dcb385902413affbd7919525db7e96
Deleted: sha256:18b2306bc0923de694a056448d2d2e33439f6d02b36b0c6a3d0ed7c323dd4418
Deleted: sha256:17e42b23df8e620e13fa4130fd9a04c43589b5b348480513518fbf6ce9694dfb
Deleted: sha256:dca11b225a640f6c1dac7264469049213078a7c63e99f764851f3a9167463757
Deleted: sha256:aa6e5d2a1c7485b528c7b47ac0aa15a158edc489ce09ae8393b2ed0f6219bd8e
Deleted: sha256:80537a100f0e62fa82ca4420923b120192d72471f1965e7309ffec811de4670b
Deleted: sha256:bad56acc3d625fc0cc379915485cb4f396730097ec1734205f828c7d43d02715
Deleted: sha256:4d0b85a183f5c00e734d5ad7b81c97e97dd8af3b55d5cf929125238faa0c8bf8
Deleted: sha256:ab76068f12a968afdfbabdad9a850102607c5095d3b34ed3b8e00a15ff72639a
Deleted: sha256:5dacd731af1b0386ead06c8b1feff9f65d9e0bdfec032d2cd0bc03690698feda


$ docker rmi mysql:5.7.21

Untagged: mysql:5.7.21
Untagged: mysql@sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c
Deleted: sha256:5195076672a7e30525705a18f7d352c920bbd07a5ae72b30e374081fe660a011
Deleted: sha256:bc52f6d08bc65c22baab4384ae534d4c5ba8c988197de49975e0a0f78310dd89
Deleted: sha256:b2590548a0917767b420cf20d0cef3aae8912314de216f624c0840f3ad827aa7
Deleted: sha256:756d63a7d5896b52d445ea84ee392cb08a7c119322cfcdfed6303de1ed0d0eab
Deleted: sha256:8e4736576db75536185beba95c5877deeb3915740688cbbc17fe04aed3632282
Deleted: sha256:e6e6e1bb8a16eadbe6628770767615fbc8d67bf11dde69a902116efe847baa7e
Deleted: sha256:080b6c4ec1d55d91a7087e12ae3bd4df252148d94f9911209e0a83d50dc63784
Deleted: sha256:58b97da9f98f75af01ae59c3cb1fdd07a07297015459f3f9f88b140699b29147
Deleted: sha256:3918448e7fe95f36f67a55c938559bab787249b8fa5c7e9914afd46994d045b0
Deleted: sha256:fac8373d1ec4f5bb6c13f12170f558edc3cfbfe8215ae3d1c869940401bc14cf
Deleted: sha256:130f3e567e288fdbbc3ae7cd7aa6c8b3d952bebd3eae58f0a7da93acbb22a258
Deleted: sha256:3358360aedad76edf49d0022818228d959d20a4cccc55d01c32f8b62e226e2c2

再度docker images コマンドを入力すると、
Docker イメージが削除されていることが確認できます。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

ハンズオンは以上です。 お疲れ様でした。

6
8
0

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
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?