自分だけのクイズ作成 - Quipha公開中

【Docker Compose】WordPressを簡単構築

Docker
スポンサーリンク

はじめに

複数のコンテナを使う場合に、Docker Composeを使うと便利です。
複数のコンテナの定義をymlファイルに記載し利用できます。

今回はdockerでWordpressを構築する例をもとに、Docker Composeについてまとめました。

環境

  • Windows10
  • docker

Docker Composeの確認

PowerShellから以下のコマンドでDocker Composeを確認します。

docker-compose --version
docker-compose version 1.23.2, build 1110ad01

Windows版のDockerをインストールしたら入っていました。

Docker Composeを使わない場合

まずはDocker Composeを使わずに構築してみます。
個別にイメージをpullします。

docker pull mysql:5.7
docker pull wordpress:latest

以下のように2つ起動します。

docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=passwd -e MYSQL_DATABASE=wordpress -d mysql:5.7
docker run --name wp_site --link mysql_db:mysql -p 8000:80 -e WORDPRESS_DB_PASSWORD=passwd -d wordpress

dockerの引数は以下です。

引数備考
–nameコンテナ名
-eコンテナの環境変数
-dバッググラウンドで起動
–link他のコンテナへのリンク
-pポート転送(ホストのポート:コンテナのポート)

ブラウザで以下のURLにアクセスします。

http://localhost:8000/

WordPressの画面が表示されました。

ついでにインストールしてみましょう。
日本語を選択して「続ける」をクリックします。

データベース名などを入力する画面は表示されませんでした。
なぜなのか気になったので、Wordpressの設定を見てみることにします。

WordPressのコンテナに入るには、execを使用します。

docker exec -it wp_site /bin/bash

ドキュメントルートの中に入りました。

root@4c918f8e5317:/var/www/html# ls
index.php    wp-activate.php     wp-comments-post.php  wp-content   wp-links-opml.php  wp-mail.php      wp-trackback.php
license.txt  wp-admin            wp-config-sample.php  wp-cron.php  wp-load.php        wp-settings.php  xmlrpc.php
readme.html  wp-blog-header.php  wp-config.php         wp-includes  wp-login.php       wp-signup.php

catコマンドあたりで、wp-config.phpを見てみます。
やっぱりDBの設定が入っていました。dockerのコンテナ作成時にもう設定されるようですね。
ホストは–linkで指定した「mysql」でアクセスしているのが分かります。

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress');

/** MySQL database username */
define( 'DB_USER', 'root');

/** MySQL database password */
define( 'DB_PASSWORD', 'passwd');

/** MySQL hostname */
define( 'DB_HOST', 'mysql');

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8');

インストールに戻って、サイトの情報などを入力します。

これだけでWordpressが使えるようになりました。

Docker Composeを使ってみる

このように複数のコンテナを起動したり停止したりするのが面倒です。
そこでDocker Composeを使ってみましょう。
先程まで使用したdockerコンテナやイメージは削除しておきましょう。

任意の場所にフォルダを作成します。

D:\docker\wordpress

先程のフォルダの直下にdocker-compose.ymlファイルを作成します。
中身は以下のようにしました。
内容はdocker runと同じ感じですね。

version: '2'
services:
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: passwd
      MYSQL_DATABASE: wordpress

  wordpress:
    depends_on:
      - mysql
    image: wordpress:latest
    ports:
      - "8000:80"
    volumes:
      - "./html/:/var/www/html/"
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_PASSWORD: passwd

versionはComposeファイルのフォーマットです。
バージョンによって書き方が異なるようです。

Compose file
Compose file reference

–linkオプションについては、自動で認識するためdocker-compose.ymlでは指定する必要はありません。

WordPressコンテナは、公開ディレクトリのフォルダをホスト側と共有しました。

docker-compose.ymlと同階層に移動し、以下のコマンドを実行します。

docker-compose up -d

初回時はイメージの構築から行われます。
しばらくすると各コンテナが起動します。

dockerコンテナを確認しましょう。
2つとも起動していますね。

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
3abfb63269e4        wordpress:latest    "docker-entrypoint.s…"   15 seconds ago      Up 10 seconds       0.0.0.0:8000->80/tcp   wordpress_wordpress_1
8a86090ba4bc        mysql:5.7           "docker-entrypoint.s…"   19 seconds ago      Up 15 seconds       3306/tcp, 33060/tcp    wordpress_mysql_1

ブラウザで以下のURLにアクセスします。

http://localhost:8000/

WordPressの画面が表示されました。

ホスト(Windows)の方でもWordpressのファイルが見えることを確認します。

先程同様に、Wordpressがインストールできることを確認してください。

Docker Composeコマンド

docker-compose.ymlと同じ階層で、それぞれのコマンドが使用できます。

コンテナの起動

-dはバッググラウンドで起動。

docker-compose up -d

コンテナの確認

docker-compose ps
指定されたパスが見つかりません。
        Name                       Command               State          Ports
-------------------------------------------------------------------------------------
wordpress_mysql_1       docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
wordpress_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8000->80/tcp

コンテナの停止

docker-compose stop
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_mysql_1     ... done

コンテナの削除

docker-compose rm
Going to remove wordpress_wordpress_1, wordpress_mysql_1
Are you sure? [yN] y
Removing wordpress_wordpress_1 ... done
Removing wordpress_mysql_1     ... done

コンテナの停止、削除、ネットワーク削除、イメージ削除

docker-compose down --rmi all
Removing network wordpress_default
Removing image mysql:5.7
Removing image wordpress:latest

さいごに

今回はDocker Composeについてまとめました😊

コメント

タイトルとURLをコピーしました