web-dev-qa-db-fra.com

Différence entre 'image' et 'build' dans docker compose

S'il vous plaît, aidez-moi à comprendre la différence entre 'image' et 'build' dans docker compose

31
meallhour
  • image signifie docker compose exécutera un conteneur basé sur cette image
  • build signifie docker compose créera d'abord une image basée sur le Dockerfile trouvé dans le chemin associé à la construction (puis exécutera un conteneur basé sur cette image).

PR 2458 a finalement été fusionné pour autoriser les deux (et utiliser image comme nom d'image lors de la construction, s'il existe).

therobyouknow mentionne dans les commentaires :

dockerfile: comme sous-instruction sous build: peut être utilisé pour spécifier le nom/chemin du fichier Dockerfile.

version: '3'
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1
25
VonC

build: attend le chemin dockerfile comme argument, il créera d'abord une image, puis utilisera l'image pour créer un conteneur.

image: attend le nom d'image existant comme argument, il lancera le conteneur en utilisant cette image.

Exemple: docker-compose.yaml

version: '3'
services:
  service1:
    build: .
    ports:
      - "5000:5000"
  service2:
    image: "redis:Alpine"

service1 créera d'abord une image basée sur Dockerfile du chemin actuel et exécutera le conteneur basé sur cette image.

service2 téléchargera l'image "redis: Alpine" depuis le docker hub et exécutera le conteneur sur l'image téléchargée.

1
Shahid Hussain