docker-composeコマンドで複数のDockerコンテナをまとめて操作する
Docker for MacでWordPressの環境を構築して色々と作業している内に、WordPressのDockerコンテナとMySQLのDockerコンテナの起動や停止を別々にするのが面倒になってきたので、まとめて操作する方法が無いか調べたらDocker Composeがありました。
docker-compose.yml
ファイルに設定を記述してDockerコンテナを作成*1すれば、複数のDockerコンテナの起動や停止がdocker-compose
コマンドでまとめて実行できるのでとても便利です。
目次
docker-compose.ymlファイルを作成
適当なディレクトリにdocker-compose.yml
を作成して、作成するDockerコンテナの設定を記述します。
~ $mkdir WapuuDock $cd WapuuDock ~/WapuuDock $touch docker-compose.yml $vim docker-compose.yml
docker-compose.yml
# MySQLのDockerコンテナ wordpress_db: # サービス名(Docker Composeが識別する名前) container_name: wordpress_db # コンテナ名(コンテナに任意の名前を付ける) image: mysql:5.7 # Dockerイメージ environment: # 環境変数 MYSQL_ROOT_PASSWORD: password # MySQLルートユーザのパスワード # WordPressのDockerコンテナ wapuu_dock: # サービス名(Docker Composeが識別する名前) container_name: wapuu_dock # コンテナ名(コンテナに任意の名前を付ける) image: wordpress # Dockerイメージ links: # 起動時に接続するコンテナのサービス名を設定 - wordpress_db:mysql # MySQLデータベースへの接続 ports: # 使用するポートを設定 - "8080:80" # 対応させるホストOSとコンテナのポート volumes: # 使用するディレクトリを設定 - ~/WapuuDock:/var/www/html # 対応させるホストOSとコンテナのディレクトリ
Docker Compose
にはversion 1
とversion 2
の記述方法があり、version 2
の利用が推奨されているそうですが、このdocker-compose.yml
はversion 1
で記述*2しています。
参考までに、このdocker-compose.yml
ファイルに記述した設定で作成するDockerコンテナを、docker run
コマンドで作成する場合を記載しておきます。
- MySQLのDockerコンテナ
$docker run --name wordpress_db -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
- WordPressのDockerコンテナ
$docker run --name wapuu_dock --link wordpress_db:mysql -p 8080:80 -v ~/WapuuDock:/var/www/html -d wordpress
docker-compose upでDockerコンテナを作成・起動
docker-compose.yml
ファイルが格納されているディレクトリでdocker-compose up
すれば、Dockerコンテナが作成されます。
~/WapuuDock $docker-compose up -d Creating wordpress_db Creating wapuu_dock
- -d … コンテナをデタッチドモードでバックグランドで起動するオプション