Bird
Raised Fist0
Dockerdevops~5 mins

Building images in Compose in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the build key in a Docker Compose file?
The build key tells Docker Compose to create a Docker image from a Dockerfile before starting the container.
Click to reveal answer
intermediate
How do you specify the path to a Dockerfile in a Compose file?
Use build: with a context for the folder and dockerfile for the file name, like:
build:
  context: ./app
  dockerfile: Dockerfile.dev
Click to reveal answer
beginner
What happens if you run docker-compose up and the image does not exist?
Docker Compose will automatically build the image using the Dockerfile specified under the build key before starting the container.
Click to reveal answer
intermediate
Can you pass build arguments in Docker Compose? How?
Yes, you can pass build arguments using the args key under build. For example:
build:
  context: .
  args:
    VERSION: 1.0
Click to reveal answer
beginner
What is the difference between image and build in a Compose service?
image specifies an existing image to use, while build tells Compose to create an image from a Dockerfile before running the container.
Click to reveal answer
In a Docker Compose file, which key is used to build an image from a Dockerfile?
Abuild
Bimage
Ccontainer
Dservice
How do you specify a custom Dockerfile name in Compose?
ARename the Dockerfile to Dockerfile.compose
BUse <code>file</code> key at root
CUnder <code>build</code>, use <code>dockerfile</code> key
DUse <code>image</code> key with filename
What does Docker Compose do if the image specified in image does not exist locally and no build is defined?
ABuilds the image automatically
BPulls the image from Docker Hub
CThrows an error and stops
DCreates an empty image
Which command builds images defined in a Docker Compose file before starting containers?
Adocker-compose up
Bdocker-compose run
Cdocker-compose start
Ddocker-compose build
How can you pass build-time variables to a Dockerfile using Compose?
AUsing <code>params</code> under <code>service</code>
BUsing environment variables under <code>environment</code>
CUsing <code>variables</code> key at root
DUsing <code>args</code> under <code>build</code>
Explain how Docker Compose builds images using the build key and what options you can specify under it.
Think about how you tell Compose where the Dockerfile is and how to customize the build.
You got /4 concepts.
    Describe the difference between using image and build in a Docker Compose service.
    Consider when you want to use a ready image versus creating your own.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the build key do in a Docker Compose file?
      easy
      A. It sets the network mode for the container.
      B. It runs a container from an existing image.
      C. It specifies environment variables for the container.
      D. It tells Compose how to build a Docker image from a directory or Dockerfile.

      Solution

      1. Step 1: Understand the role of build in Compose

        The build key tells Docker Compose to create an image from source files, usually by specifying a directory with a Dockerfile.
      2. Step 2: Compare with other keys

        Other keys like image specify existing images, and environment sets variables, so they do not build images.
      3. Final Answer:

        It tells Compose how to build a Docker image from a directory or Dockerfile. -> Option D
      4. Quick Check:

        build = build image [OK]
      Hint: Remember: build = create image from source [OK]
      Common Mistakes:
      • Confusing build with image key
      • Thinking build runs containers
      • Mixing build with environment variables
      2. Which of the following is the correct syntax to specify a custom Dockerfile in a Compose service?
      easy
      A. build: ./app dockerfile: Dockerfile.custom
      B. build: path: ./app file: Dockerfile.custom
      C. build: context: ./app dockerfile: Dockerfile.custom
      D. build: source: ./app file: Dockerfile.custom

      Solution

      1. Step 1: Recall correct keys under build

        The correct keys are context for directory and dockerfile for custom Dockerfile name.
      2. Step 2: Check each option

        build: context: ./app dockerfile: Dockerfile.custom uses context and dockerfile correctly. Others use invalid keys like path, file, or source.
      3. Final Answer:

        build: context: ./app dockerfile: Dockerfile.custom -> Option C
      4. Quick Check:

        Use context and dockerfile keys [OK]
      Hint: Use 'context' and 'dockerfile' keys exactly [OK]
      Common Mistakes:
      • Using 'path' or 'file' instead of 'context' and 'dockerfile'
      • Indentation errors under build
      • Putting dockerfile outside build block
      3. Given this Compose snippet:
      services:
        web:
          build:
            context: ./webapp
          image: mywebapp:latest
      
      What happens when you run docker compose up --build?
      medium
      A. It builds the image from ./webapp and tags it as mywebapp:latest, then starts the container.
      B. It pulls the image mywebapp:latest from Docker Hub and runs it.
      C. It builds the image but does not tag it as mywebapp:latest.
      D. It starts the container without building or pulling any image.

      Solution

      1. Step 1: Understand build and image keys together

        The build key builds an image from the given context. The image key tags the built image with the given name.
      2. Step 2: Effect of --build flag

        The --build flag forces Compose to build the image before starting containers.
      3. Final Answer:

        It builds the image from ./webapp and tags it as mywebapp:latest, then starts the container. -> Option A
      4. Quick Check:

        build + image = build and tag image [OK]
      Hint: build + image tags image before running [OK]
      Common Mistakes:
      • Thinking image pulls from Docker Hub automatically
      • Assuming build does not tag image
      • Ignoring --build flag effect
      4. You wrote this Compose service:
      services:
        api:
          build: ./api
          dockerfile: Dockerfile.api
      
      When running docker compose build, you get an error. What is wrong?
      medium
      A. You must specify context instead of build.
      B. The dockerfile key must be inside the build block, not at the same level.
      C. The build key cannot be a string; it must be a dictionary.
      D. Docker Compose does not support custom Dockerfile names.

      Solution

      1. Step 1: Check Compose syntax for build and dockerfile

        The dockerfile key must be nested inside the build dictionary, not at the same level as build.
      2. Step 2: Identify the error cause

        Here, build is a string, and dockerfile is separate, causing Compose to fail parsing.
      3. Final Answer:

        The dockerfile key must be inside the build block, not at the same level. -> Option B
      4. Quick Check:

        dockerfile inside build block [OK]
      Hint: Put dockerfile under build, not beside it [OK]
      Common Mistakes:
      • Placing dockerfile outside build block
      • Using build as string with dockerfile key separately
      • Assuming dockerfile key is global
      5. You want to build two services in Compose, frontend and backend, each with different Dockerfiles in the same directory ./app. How do you configure the build section for both services correctly?
      hard
      A. Use context: ./app for both, and specify different dockerfile names under each service's build.
      B. Use different context paths for each service pointing to the same directory.
      C. Use one service with build and the other with image only.
      D. You cannot build two images from the same directory with different Dockerfiles.

      Solution

      1. Step 1: Understand build context and dockerfile usage

        You can use the same context directory but specify different dockerfile names to build different images from the same folder.
      2. Step 2: Check options for multiple services

        Use context: ./app for both, and specify different dockerfile names under each service's build. correctly uses the same context with different Dockerfiles. Use different context paths for each service pointing to the same directory. is redundant, C limits building, and D is false.
      3. Final Answer:

        Use context: ./app for both, and specify different dockerfile names under each service's build. -> Option A
      4. Quick Check:

        Same context + different dockerfile names [OK]
      Hint: Same folder, different dockerfile names per service [OK]
      Common Mistakes:
      • Trying to use different contexts for same folder
      • Thinking multiple Dockerfiles in one folder is unsupported
      • Not specifying dockerfile key for each service
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard