Docker、k8sまとめ[第7回] docker-composeの利用
第6回ではk8sによるデプロイの管理について記載しました。
今までは、1つのコンテナでアプリで動かしてきましたが、複数のコンテナでアプリを動かしていこうと思います。
まずはdocker-composeを利用した、複数コンテナの連携について記載します。
目次
docker-composeとは
docker-composeは、複数のコンテナを連携して実行するコマンドで、
docker-compose.yamlに構成を記載すると実行できます。
dockerコマンドを簡略化してくれます。
1つのコンテナで全部動かせばいいというのを考えてしまいますが
コンテナは1つ1プロセスが原則です。
お互いの影響をなくせたり、コンテナ自体を小さくできますので。
docker-composeでWordPressを実行
以下にWordPressのクイックスタートの方法が書いてるのでこれを使って少し追加して説明しようと思います。
上記のリンクに書いてあるyamlにnetwork
というのを足しています。
デフォルトで設定されるので書かなくても良いのですが、説明のために足しました。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
networks:
- default
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
networks:
- default
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
networks:
default:
driver: bridge
dockerではこのnetworkというので、複数のコンテナを名前で連携できます。
wordpress
から見てdb
という名前でアクセスしてますね。
今回はWordPressとDBだけなのでneworkは1つだけでよいです。
たとえばWEB-AP-DBの3層構造だと、
WEB-APとAP-DBをつなげる必要はあるが、WEB-DBをつなげる必要はないです。
そういった場合は2つのnetworkに分けることもできます。
上記のYamlをdocker-compose.yaml
というファイルにして、
ファイルのあるフォルダで、以下のコマンドを実行すると、起動できます。
docker-compose up -d
コマンドの実行が完了したら、http://localhost:8000/
でWordPressのサイトが見えると思います。
停止、起動とコンテナへのログイン
起動したコンテナを停止するには、以下のコマンドです。
docker-compose stop
このコマンドはdocker-compose.yaml
のあるフォルダで実行する必要があります。
どれを止めていいのかわからないですかね?
また、再度起動するときは以下のコマンドです。
docker-compose start
こちらもdocker-compose.yaml
のあるフォルダで実行する必要があります。
upだとキャッシュを使いますが、再度イメージ作成からになるのかな?
また、コンテナへのログインも簡単で以下でそれぞれログインできます。
# wordpressへのログイン
$ docker-compose exec wordpress /bin/bash
root@15e44a642e10:/var/www/html#
# dbへのログイン
$ docker-compose exec db /bin/bash
root@deaa85a2906f:/#
まとめ
docker-composeを利用すると複数のコンテナを連携して実行できます。
コンテナは1つ1プロセスが原則で、WEB、AP、DBなどを別々のコンテナで動かして、
連携させる必要があります。