Dockerで複数のコンテナをまとめて処理したいときに便利なdocker-composeの紹介です。今回はWordpressとそれが使うDBの2つのコンテナをまとめて起動する例を見てみます。
操作手順
まずは操作手順だけ先に紹介し、その後各手順の説明をします。
作業フォルダの作成
何か適当な作業用フォルダを作成します。ここではC:¥docker¥testとします。
docker-compose.ymlの作成
作業フォルダにdocker-compose.ymlという名前でファイルを作り、以下の様に編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
version: '3' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: ${DB_NAME} WORDPRESS_DB_USER: ${DB_USER} WORDPRESS_DB_PASSWORD: ${DB_PASS} depends_on: - db db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: ${DB_NAME} MYSQL_USER: ${DB_USER} MYSQL_PASSWORD: ${DB_PASS} MYSQL_RANDOM_ROOT_PASSWORD: '1' |
.envファイルの作成
作業フォルダに.envという名前でファイルを作り、以下の様に編集します。
1 2 3 |
DB_NAME=exampledb DB_USER=exampleuser DB_PASS=examplepass |
コンテナの起動
コマンドプロンプトを開いて作業フォルダへ移動し以下のコマンドを実行します。
c:\docker\test>docker-compose up -d
起動の確認
起動が終わったらブラウザでhttp://localhost:8080にアクセスしてみます。次のような画面が表示されたら成功です。
各手順の説明
それでは各操作の説明です。
docker-compose.ymlの説明
このymlファイルのバージョンです。あまり気にせず現時点では3でいいです。
version: '3'
コンテナを定義するブロックです。決め打ちです。
services:
作成するコンテナの名前です。
wordpress:
db:
コンテナ作成に使用するイメージファイルです。
image: wordpress
image: mysql:5.7
PCの再起動などでdockerのサービスが起動した時にコンテナを起動するようにする設定です。
restart: always
ホストのポートとコンテナのポートのマッピングです。この例ではホストの8080番ポートをコンテナの80番ポートにマッピングします。
- 8080:80
コンテナの環境変数の指定です。後ろに続く値が環境変数としてコンテナ上で利用できます。
environment:
どのコンテナに依存しているのかの指定です。この例ではWordpressはDBが起動していないと動かないのでDBに依存させています。
depends_on:
.envの説明
docker-composeを実行した時に自動で読み込んで環境変数として扱ってくれるようになるファイルです。docker-compose.yml内で${環境変数名}の様に指定して使います。環境変数が展開された後のymlファイルの内容を以下のコマンドで確認できます。
docker-compose config
docker-composeコマンドの説明
以下のコマンドでコンテナが起動しました。-dはデタッチのdでコンテナがバックグラウンドで実行されます。
c:\docker\test>docker-compose up -d
起動したコンテナは以下のコマンドで停止します。
c:\docker\test>docker-compose stop
作成したコンテナは以下のコマンドで削除します。
c:\docker\test>docker-compose down