あかんわ

ブログで日誌でも書くようにすれば多少はやる気が出るかと思ったんです

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 1version 2の記述方法があり、version 2の利用が推奨されているそうですが、このdocker-compose.ymlversion 1で記述*2しています。

参考までに、このdocker-compose.ymlファイルに記述した設定で作成するDockerコンテナを、docker runコマンドで作成する場合を記載しておきます。

  • MySQLのDockerコンテナ
$docker run --name wordpress_db -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
$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 … コンテナをデタッチドモードでバックグランドで起動するオプション

参考記事

knowledge.sakura.ad.jp docs.docker.com

*1:作成済みのDockerコンテナの操作には使えないようです

*2:version 2で記述するとWordPressのDockerコンテナが作成時に同時に起動しなかったため