Docker入門⑤ -Docker Compose ハンズオン-

Docker入門⑤ -Docker Compose ハンズオン-

Docker Compose

 前回は、Docker Compose を理解する上で必要な背景知識である 3 層アーキテクチャや Docker 単体の運用する上での課題について触れた。
今回は実際に Docker Compose をインストールし、複数のコンテナを起動してみよう!まず、Docker Compose は Docker Engine が必要なので、 ホスト OS に応じて docker をインストールする。詳細な方法は、公式ドキュメントを参照されたい。

docker インストール (CentOS のリンク)
https://docs.docker.com/engine/install/centos/

docker をインストールできたかをバージョンを確認し、確認する。

$ docker –version
Docker version 19.03.13, build 4484c46d9d

次に docker-compose コマンドのインストール方法を紹介する。
docker-compose のインストール
http://docs.docker.jp/compose/install.html#linux-compose

上述の方法でうまくいっていれば、以下のようにバージョンが確認できる。

$ docker-compose –version
docker-compose version 1.27.4, build 40524192

なお、バージョンについては、2021/01/22 現在のものとなっているため、最新のバージョンについては、公式ドキュメントを参照されたい。

ディレクトリを作成し、該当のディレクトリに docker compose で利用するための、構成ファイル (docker-compose.yml ファイル) を作成する。構成ファイルの説明について次回以降の記事で紹介する。

ファイル名 : docker-compose.yml
version: ‘3.8’ # YAML のバージョンを指定
services: # サービスを定義するセクション
wordpress: # wordpress サービスの定義
image: wordpress # wordpress の公式イメージを利用
restart: always # 常にコンテナが起動するように、再起動ポリシーを指定
ports: # ポート公開を指定
– 8080:80 # ホスト側のポート8080 をコンテナ内のポート80 にマッピング
environment: #コンテナ内で利用できる環境変数の指定
WORDPRESS_DB_HOST: db #db という名前のホストに接続
WORDPRESS_DB_USER: exampleuser # user 名の指定
WORDPRESS_DB_PASSWORD: examplepass #パスワードを指定
WORDPRESS_DB_NAME: exampledb # WordPress が利用する MySql データベース名
volumes: # ボリュームに関する指定
– wordpress:/var/www/html # wordpress を /var/www/html にマウント
db: # db サービスの定義
image: mysql:5.7 # Mysql 5.7 イメージを使用
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: ‘1’ # ランダムに Mysql の root パスワードを生成
volumes:
– db:/var/lib/mysql # db を /var/lib/mysql にマウント
volumes: # ボリュームを定義するセクション
wordpress:
db:

ディレクトリ構造は以下の通りとなっている。
$ tree
.
└── wordpress
└── docker-compose.yml

/wordpress のディレクトリで以下のコマンドを実行する。
$ docker-compose up -d
Creating network “wordpress_default” with the default driver
Creating volume “wordpress_wordpress” with default driver
Creating volume “wordpress_db” with default driver
Creating wordpress_wordpress_1 … done Creating wordpress_db_1 … done

補足 1:
Docker Engine のバージョン (Docker version 20.10.2, build 2291f61) によっては、docker-compose.yml の version を 3.3 などにすることで実行できる場合もあることを確認している。

Docker Compose を実行しているホストの IP アドレスに 8080 ポートでアクセスする。
http://:8080

アクセスできれば、以下のようにwordpress の初期設定画面が表示される。

補足 2:
クラウドサービスを利用しており、特に AWS EC2 を利用の場合には、インスタンスのセキュリティグループにおけるインバウンドルールに対し、アクセス元である自身の IP アドレスを 8080 ポートを許可しているかについて確認する必要があることに注意したい。

次に、構成された docker について見ていこう。
稼働しているサービスについて確認する。
$ docker ps
IMAGE STATUS PORTS NAMES
mysql:5.7 Up 3306/tcp, 33060/tcp wordpress_db_1
wordpress Up 0.0.0.0:8080->80/tcp wordpress_wordpress_1

稼働しているネットワークについて確認する。(デフォルトで作成されるネットワークは非表示とした)
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
517daa059c2f wordpress_default bridge local

稼働している volumeについて確認する。
$ docker volume ls
DRIVER VOLUME NAME
local wordpress_db
local wordpress_wordpress

上記の構成をポンチ絵でイメージすると以下のようになる。

今回は、docker とdocker Compose をインストールし、構成したyml ファイルにより docker compose で起動し wordpress サービスにアクセスした。
また、起動した docker の構成についても簡単に触れた。

参考:
Docker Compose を利用し、Docker コンテナとして生成される独立した環境内にて WordPress を構成する方法
クィックスタート: Compose と WordPress — Docker-docs-ja 17.06 ドキュメント

Software Design 12 月 Docker アプリケーション開発実践ガイド
Software Design 2020年12月号|技術評論社 (gihyo.jp)

Docker のネットワークの仕組み
Dockerのネットワークの仕組み – sagantaf (hatenablog.com)