Help us understand the problem. What is going on with this article?

Docker応用チュートリアル:WordPress

More than 1 year has passed since last update.

概要

Docker Compose を使い、WordPress を実行します。

0. 用語説明とセットアップ

Docker Compose(コンポーズ)は、複数のコンテナを使うアプリケーションを、定義・実行するツールです。

Docker Compose のセットアップは、root 権限で次のコマンドを実行します。

curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

実行後、バージョン番号が表示されるのを確認します。

$ docker-compose version
docker-compose version 1.13.0, build 1719ceb
docker-py version: 2.2.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

1. docker-compose.yml ファイルの準備

Docker Compose は、 docker-compose.yml という名称の YAML 形式のファイルを通し、サービス(コンテナ)を定義します。どのようなイメージを元に実行するか、どのポートを使うか、あるいは、ボリュームやネットワークを定義できます。

まず、作業用ディレクトリを作成し、移動します。

$ mkdir wordpress
$ cd wordpress

エディタを開き docker-compose.yml ファイルを作成します。このファイルは「プロジェクトの定義ファイル」とも呼びます。Docker Compose では、デフォルトでディレクトリ名(この例では wordpress )が該当します(-p オプションを指定し、ディレクトリ名以外にも変更できます)。

$ vi docker-compose.yml

ファイルの中身は次のようにします。

version: '3.1'

services:

  wordpress:
    image: wordpress
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

ここではサービス(services)として wordpressmysql の2つのコンテナを定義しています。

2. 必要なイメージのダウンロード

docker-compose pull を実行すると、docker-compose.yml に含まれるサービスが必要なイメージを一括ダウンロードします。

$ docker-compose pull

docker images コマンドを実行すると、必要なイメージがダウンロードされているのが分かります。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           latest              ca96afcfa242        7 days ago          406MB
mysql               5.7                 e799c7f9ae9c        2 weeks ago         407MB

3. WordPress の実行

サービスを実行するには docker-compose up -d コマンドを実行します。updocker-compose.yml ファイルに記述している全てのサービスを起動し、-d はデタッチド・モード(バックグラウンドで実行)します。

まず mysql サービスのみ実行します。

$ docker-compose up -d mysql
Creating network "wordpress_default" with the default driver
Creating wordpress_mysql_1 ...
Creating wordpress_mysql_1 ... done

サービスが稼働しているかどうかは docker-compose ps コマンドで確認します。

$ docker-compose ps
      Name                    Command             State    Ports
------------------------------------------------------------------
wordpress_mysql_1   docker-entrypoint.sh mysqld   Up      3306/tcp

Up であれば、正常起動しています。

ログ(標準出力)を docker-compose logs -f コマンドで確認します。特にエラーがなければ Ctrl-C を入力して、中断します。

MySQL の起動を確認した後、WordPress コンテナを起動します(WordPressコンテナは、MySQL データベースに接続できないと起動中止してしまうため、あえてこの手順にしています)。

$ docker-compose up -d
wordpress_mysql_1 is up-to-date
Creating wordpress_wordpress_1 ...
Creating wordpress_wordpress_1 ... done

そして、サービスの稼働状況を確認します。

$ docker-compose  ps
        Name                       Command               State          Ports
-------------------------------------------------------------------------------------
wordpress_mysql_1       docker-entrypoint.sh mysqld      Up      3306/tcp
wordpress_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp

Wordpress コンテナのログを確認し、正常起動していることを確認します。

$ docker-compose logs -f wordpress
Attaching to wordpress_wordpress_1
(省略)
wordpress_1  | [Thu May 25 04:32:07.734697 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

ブラウザから http://<IPアドレス>/ にアクセスし、WordPress の画面が表示されるのを確認します。

4. WordPress の停止と再起動

停止は docker-compose stop です。

$ docker-compose stop
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_mysql_1 ... done
$ docker-compose ps
        Name                       Command               State    Ports
-----------------------------------------------------------------------
wordpress_mysql_1       docker-entrypoint.sh mysqld      Exit 0
wordpress_wordpress_1   docker-entrypoint.sh apach ...   Exit 0

再起動するには、実行中であれば docker-compose restart、今回のように停止中であれば docker-compose start を実行します。

$ docker-compose start
Starting mysql ... done
Starting wordpress ... done
$ docker-compose ps
        Name                       Command               State          Ports
-------------------------------------------------------------------------------------
wordpress_mysql_1       docker-entrypoint.sh mysqld      Up      3306/tcp
wordpress_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp

5. WordPress の削除

サービスを削除(使用していたコンテナの削除)は docker-compose rm または docker-compose down です。

$ docker-compose down
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_mysql_1 ... done
Removing wordpress_wordpress_1 ... done
Removing wordpress_mysql_1 ... done
Removing network wordpress_default
$ docker-compose ps
Name   Command   State   Ports
------------------------------
sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。
https://www.sakura.ad.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away