docker-compose.yml ファイル

概要

・”docker-compose.yml” ファイルにはコンテナの構成内容を記載する

・複数のコンテナを連携させて構成・管理するためのファイル

・yaml ファイルのネストのスペース数は統一されていれば何個でも良い

“docker-compose.yml” ファイルを準備
  1. docker-compose は必ず最初に “version” と “services” 項目を記載する
  • “version”:2023年9月時点の最新は “3”(参考)
  • “services”:稼働するコンテナを記載
    service名は任意でOK(コンテナ名でなくて良い)
    ※ここでは、”db” と “wordpress” の 2つを定義
  • “image”:DockerHubからのイメージ指定(イメージ名を指定)
    ※”image” の代わりに “build” が記載できる
    ※”build”:Dockerfileからイメージ指定(Dockerfileがあるフォルダのパスを指定)
  • “container_name”:任意のコンテナ名を記載
    ※docker run の “–name” と同じ
    ※ダブルクォーテーションで囲う
    ※管理面として全てのサービスに付けていた方が良い
  • “volume”:コンテナとホストでディレクトリを共有するための情報を記載
    ※docker run の “-v” と同じ
    ※「{ ホスト側のフォルダパス }:{ コンテナ側のフォルダパス }」形式で記載
    ※ソースコードや設定ファイルを共有することに使う
    ※ホストの環境に影響されないように相対パスでの記載が良い
    ※相対パス:docker-compose.yml ファイルから見たパス
  • “environment”:環境変数を記載
    ※”Key=Value” の形式で記載
    ※Value には “services” のサービス名で指定できる
    ※service名が “wordpress” の黄色枠の「db」は、もう 1つの service名 “db” を記載している
    ※docker-compose で定義する複数のコンテナ(”services:”の定義)間でやりとり(通信)ができるように、内部IPが割り当てられる(docker-compose のコンテナ間通信)
    ※黄色枠の「db」は内部IPに変換されて処理される
    → “docker-compose.yml” 記載時に内部IPを気にすることなくservice名で記載することができるので便利
  • “ports”:コンテナのポート開放とポートフォワーディングの内容を記載
    ※docker run の “-p” と同じ
    ※「{ ホスト側の外部公開ポート }:{ コンテナ側の内部ポート }」形式で記載
    ※”ports:” の後に改行して、1つネストして記載するルールになっている
    ※ホスト側の外部公開ポートが被らないようにWebサーバを複数構築できたりする