イメージの連携


docker compose

WordPressをdockerで構築する場合、WordPress 本体が置かれているアプリケーション・サーバ(webサーバー+PHP)と MySQL サーバという大まかに二つのコンテナで構成されることになります。

docker compose とは、複数の Docker コンテナからなるサービスを構築・実行する手順をひとまとめに定義して自動化するという機能です。

普通であればそれらコンテナごとに個別に起動し、さらにそれぞれを関連付ける (linkオプション ) 必要があります。
起動する順序にも気を使わなくてはなりません。コンテナの数が増えてくると面倒になってしまいます。

docker compose はdocker-compose.ymlというファイルで構成を定義します。YAML で体系的に構成を定義出来るので全体像の見通しが良いのが特徴です。

docker run時のオプションをほぼ同じように定義できる上、コマンド1回実行するだけで複数のコンテナサービスを全て起動できます。

Source: docker-compose を使って WordPress テーマ開発環境を構築しよう

docker-compose.yml

$ cd ../wordpress/
$ vi docker-compose.yml
version: "2"

services:

  wordpress:
    image: wordpress:latest
    ports:
      - "80:80"
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: "db:3306"
    networks:
      - flat-network
    env_file: .env

  db:
    image: mysql:5.7
    volumes:
      - "db-data:/var/lib/mysql"
    networks:
      - flat-network
    env_file: .env

volumes:
  db-data:

networks:
  flat-network:

.env

WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wp_user
WORDPRESS_DB_PASSWORD=hogehoge
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=wp_user
MYSQL_PASSWORD=hogehoge

起動

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

終了(コンテナの停止/削除およびボリュームの削除)

$ docker-compose down -v

もしdocker-compseを使わなかったら...

$ docker run --name db -v db-data:/var/lib/mysql -e MYSQL_USER=wp_user -e MYSQL_PASSWORD=hogehoge -e MYSQL_DATABASE=wordpress -d mysql:5.7
$ docker run -p 80:80 -e WORDPRESS_DB_PASSWORD=hogehoge -d --name wordpress --link db:mysql wordpress
$ docker stop wordpress
$ docker stop db
$ docker rm wordpress
$ docker rm db
$ docker volume rm db-data

環境設定を変えてみよう!

docker-compose.ymlの設定を変更して実行される環境を変えてみましょう。ただし下記条件は守ってください。

  • ブラウザからアクセスされるポート番号は9090
  • DBのデータ保存先を実行中のフォルダ内に指定する
$ docker-compose up -d
Creating network "wordpress_flat-network" with the default driver
Creating volume "wordpress_db-data" with default driver
Creating wordpress_db_1 ... 
Creating wordpress_db_1 ... done
Creating wordpress_wordpress_1 ... 
Creating wordpress_wordpress_1 ... done

$ ls -la
-rw-r--r--  1 hideAki  staff        184  6  2 23:01 .env
drwxr-xr-x@ 9 hideAki  staff        306  6  3 05:57 db-data <-- できている
-rw-r--r--  1 hideAki  staff        401  6  3 05:56 docker-compose.yml
-rw-r--r--  1 hideAki  staff  414653440  6  2 23:39 mysql.tar
-rw-r--r--  1 hideAki  staff  432754176  6  2 23:32 wordpress46.tar
-rw-r--r--  1 hideAki  staff  418963968  6  2 23:31 wordpress47.tar

$ ls -la db-data/
total 376912
drwxr-xr-x@  20 hideAki  staff       680  6  3 05:57 .
drwxr-xr-x    8 hideAki  staff       272  6  3 06:00 ..
-rw-r-----    1 hideAki  staff        56  6  3 05:57 auto.cnf
-rw-------    1 hideAki  staff      1679  6  3 05:57 ca-key.pem
-rw-r--r--    1 hideAki  staff      1074  6  3 05:57 ca.pem
-rw-r--r--    1 hideAki  staff      1078  6  3 05:57 client-cert.pem
-rw-------    1 hideAki  staff      1679  6  3 05:57 client-key.pem
-rw-r-----    1 hideAki  staff      1321  6  3 05:57 ib_buffer_pool
-rw-r-----    1 hideAki  staff  50331648  6  3 05:57 ib_logfile0
-rw-r-----    1 hideAki  staff  50331648  6  3 05:56 ib_logfile1
-rw-r-----    1 hideAki  staff  79691776  6  3 05:57 ibdata1
-rw-r-----    1 hideAki  staff  12582912  6  3 05:58 ibtmp1
drwxr-x---   77 hideAki  staff      2618  6  3 05:57 mysql
drwxr-x---   90 hideAki  staff      3060  6  3 05:57 performance_schema
-rw-------    1 hideAki  staff      1679  6  3 05:57 private_key.pem
-rw-r--r--    1 hideAki  staff       451  6  3 05:57 public_key.pem
-rw-r--r--    1 hideAki  staff      1078  6  3 05:57 server-cert.pem
-rw-------    1 hideAki  staff      1679  6  3 05:57 server-key.pem
drwxr-x---  108 hideAki  staff      3672  6  3 05:57 sys
drwxr-x---    3 hideAki  staff       102  6  3 05:57 wordpress

$ docker-compose down -v

docker-composeの使い方、イメージできましたか?

(補足)データボリュームの指定書式について

公式リファレンスに記載があります。参考にしてください

Compose ファイル・リファレンス

results matching ""

    No results matching ""