LoginSignup
4
0

DockerComposeを理解してみる

Last updated at Posted at 2023-07-24

はじめに

こんにちは。すっかり夏になりました。ponponnsanです。

さて、今日はなんとなく雰囲気で触っていたdocker composeについて理解を深めようと思いました。

参考にした書籍は以下です。とてもわかりやすくておすすめです。さすがAmazonベストセラー。

Docker Composeとは

dockerのコマンドをいちいち全部書くのは面倒ですよね。
Docker Composeは構築に関わるコマンド分の内容を一つのyamlファイルに書きこんで、一気に実行したり、停止・破棄することができるものです。

Dockerfile との違い

Docker Compose: 「docker run」 の集合体。コンテナに加えてネットワークやボリュームなども作成できる。
Dockerfile: イメージを作成するもの。ネットワークやボリュームなどは作成できない。

*ボリューム...ストレージの一領域を区切ったもの。長いカステラの一部分みたいなイメージ。

docker-compose.yamlの書き方

docker-compose.yaml
# バージョンを書く
version: '3'

# コンテナの情報
services: 
  mySqlService:
    image: mysql:5.7
    # macはこれがないと動かなかった。
    # M1のCPUは、linux/arm64/v8だが、使用しようとしたimageがこれに対応していない
    # platformを指定して、linux/amd64に指定をする
    platform: linux/amd64
    networks:
      - myNetwork
    volumes:
      - mySqlVolume:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: myDb
      MYSQL_USER: myUser
      MYSQL_PASSWORD: myPass
  
  wordpressService:
    depends_on:
      - mySqlService
    image: wordpress
    networks:
      - myNetwork
    volumes:
      - wordpressVolume:/var/www/html
    ports:
      - 8085:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: mySqlService
      WORDPRESS_DB_NAME: myDb
      WORDPRESS_DB_USER: myUser
      WORDPRESS_DB_PASSWORD: myPass

# ネットワークの情報
networks:
  myNetwork:

# ボリュームの情報
volumes:
  mySqlVolume:
  wordpressVolume:


定義ファイルの記述ルール

  • 最初にDocker Composeのバージョンを書く
  • 「services」「networks」「volumes」の順に書く
  • 親子関係はスペースで字下げして表す
  • 名前は、大項目の下に字下げして書く
  • コンテナの設定内容は名前の下に字下げして書く
  • 「-」が入っていたら複数指定できる
  • 名前の後ろには「:」をつける
  • 「:」の後ろには、空白が必要
  • コメントアウトが使える
  • 文字列はシングルクォートかダブルクォート

今後の課題

  • ボリュームマウントとバインドマウントの違い
  • ネットワークの設定の仕方
4
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0