はじめに
「docker-composeを使うと便利〜」ってよく言われますが、どのぐらい便利になるかわからなかったので調べました。
細かく調べたわけではないので間違っている箇所があればお手数おかけしますが教えていただけると嬉しいです。
今回はQuickstart: Compose and WordPressを例に進めていきます
ネットワークの作成、コンテナの作成、コンテナをネットワークへ参加させる
docker-composeの場合
※ymlファイルを書いてから
$ docker-compose up
docker単体の場合
# ネットワークの作成
$ docker network create my_wordpress_default
# dbのコンテナを作成
$ docker run --restart=always \
-v my_wordpress_db_data:/var/lib/mysql \
--name my_wordpress_db_1 \
-e MYSQL_ROOT_PASSWORD="somewordpress" \
-e MYSQL_DATABASE="wordpress" \
-e MYSQL_USER="wordpress" \
-e MYSQL_PASSWORD="wordpress" \
mysql:5.7
# wordpress用のコンテナを作成
$ docker run --restart=always \
-v my_wordpress_wordpress_data:/var/www/html \
--name my_wordpress_wordpress_1 \
-e WORDPRESS_DB_HOST="my_wordpress_db_1" \
-e WORDPRESS_DB_USER="wordpress" \
-e WORDPRESS_DB_PASSWORD="wordpress" \
-e WORDPRESS_DB_NAME="wordpress" \
-p "8000:80" \
wordpress:latest
# ネットワークにdbのコンテナを追加
$ docker network connect my_wordpress_default my_wordpress_db_1
# ネットワークにwordpress用のコンテナを追加
$ docker network connect my_wordpress_default my_wordpress_wordpress_1
シャットダウン
docker-composeではシャットダウンするとコンテナが停止されます。
docker-composeの場合
$ docker-compose down
docker単体の場合
$ docker stop my_wordpress_wordpress_1
$ docker stop my_wordpress_db_1
クリーンアップ
docker-composeではクリーンアップをするとネットワーク、コンテナが削除されます。
docker-composeの場合
docker-compose down --volumes
docker単体の場合
# コンテナを削除
$ docker rm my_wordpress_wordpress_1
$ docker rm my_wordpress_db_1
# ネットワークを削除
$ docker network rm my_wordpress_default
# ボリュームを削除
$ docker volume rm my_wordpress_db_data
$ docker volume rm my_wordpress_wordpress_data
おわりに
ああ、便利ですね。
シェルスクリプトでコマンドを纏めてあげてもいいですが、それだと起動と削除別々のスクリプトになってファイルが多くなってしまうっていうのがわかりましたね。(1個にも纏められますがあんまり複雑にしたくないので)
dockerは停止、削除のコマンドはrm -f
で一括で出来たりもするんですが、docker-composeに合わせて分けて記載しました。