“docker-compose.yml” ファイルを準備
- 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サーバを複数構築できたりする