Docker compose内の「イメージ」と「ビルド」の違いを理解してください
image
は、docker compose
がそのイメージに基づいてコンテナを実行することを意味しますdocker compose
が最初に、ビルドに関連付けられたパスで見つかったDockerfileに基づいてイメージをビルドする(次に、そのイメージに基づいてコンテナーを実行する)ことを意味します。PR 2458 は、最終的に両方を許可するようにマージされました(そして、存在する場合は、ビルド時にimage
をイメージ名として使用します)。
therobyouknow
言及 コメント内 :
dockerfile:
の下のサブステートメントとしてbuild:
を使用して、Dockerfileのファイル名/パスを指定できます。
version: '3'
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
ビルド:引数としてdockerfileパスを想定しています。最初にイメージをビルドしてから、そのイメージを使用してコンテナーを作成します。
image:引数として既存のイメージ名が必要です。このイメージを使用してコンテナーを起動します。
例:docker-compose.yaml
version: '3'
services:
service1:
build: .
ports:
- "5000:5000"
service2:
image: "redis:Alpine"
service1は、まず現在のパスのDockerfileに基づいてイメージを構築し、このイメージに基づいてコンテナーを実行します。
service2は、Dockerハブから「redis:Alpine」イメージをダウンロードし、ダウンロードしたイメージでコンテナーを実行します。