Bird
Raised Fist0
Dockerdevops~10 mins

docker-compose.yml structure - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the version of the docker-compose file.

Docker
version: '[1]'
Drag options to blanks, or click blank then click option'
A3.8
Bv3
C3
Dversion3
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'v3' or 'version3' instead of just the version number.
Leaving the version field empty.
2fill in blank
medium

Complete the code to define the services section in docker-compose.yml.

Docker
services:
  [1]:
Drag options to blanks, or click blank then click option'
Acontainers
Bservices
Cweb
Dapps
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'containers' or 'services' as a service name.
Using plural names which are not typical.
3fill in blank
hard

Fix the error in the service definition to specify the image to use.

Docker
services:
  app:
    image: [1]
Drag options to blanks, or click blank then click option'
Amyapp/latest
Bmyapp:latest
Cmyapp_latest
Dmyapp latest
Attempts:
3 left
💡 Hint
Common Mistakes
Using slash '/' instead of colon ':' to separate image and tag.
Using spaces in the image name.
4fill in blank
hard

Fill both blanks to define ports mapping and restart policy.

Docker
services:
  db:
    ports:
      - '[1]:5432'
    restart: [2]
Drag options to blanks, or click blank then click option'
A5433
Balways
Cnever
D5432
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same port number for host and container without reason.
Using invalid restart policy values.
5fill in blank
hard

Fill all three blanks to define environment variables, volumes, and command for a service.

Docker
services:
  redis:
    environment:
      - REDIS_PASSWORD=[1]
    volumes:
      - [2]:/data
    command: [3]
Drag options to blanks, or click blank then click option'
Amysecret
B./redisdata
C"redis-server --requirepass mysecret"
Dredisdata
Attempts:
3 left
💡 Hint
Common Mistakes
Putting quotes around environment variable values incorrectly.
Using relative paths incorrectly in volumes.
Not quoting the command string properly.

Practice

(1/5)
1. What is the main purpose of the services section in a docker-compose.yml file?
easy
A. To define the containers that will run and their settings
B. To specify the Docker version to use
C. To list the volumes to be created
D. To set environment variables globally

Solution

  1. Step 1: Understand the role of services

    The services section lists all containers to run and their configurations.
  2. Step 2: Compare with other sections

    version sets compose file version, volumes defines shared storage, environment variables are per service or global but not the main purpose of services.
  3. Final Answer:

    To define the containers that will run and their settings -> Option A
  4. Quick Check:

    services = container definitions [OK]
Hint: Services section lists containers and their configs [OK]
Common Mistakes:
  • Confusing version with services
  • Thinking volumes are defined inside services only
  • Assuming environment variables are global by default
2. Which of the following is the correct way to specify a port mapping in docker-compose.yml under a service named web?
easy
A. port: - "80:80"
B. ports: - "80:80"
C. ports: - 80:80
D. mapping: - "80:80"

Solution

  1. Step 1: Check correct key for port mapping

    The correct key is ports (plural), not port or mapping.
  2. Step 2: Validate syntax for port mapping

    Port mappings must be strings with quotes like "80:80" to avoid YAML parsing issues.
  3. Final Answer:

    ports: - "80:80" -> Option B
  4. Quick Check:

    Use ports with quoted strings [OK]
Hint: Use 'ports' key with quoted strings for mappings [OK]
Common Mistakes:
  • Using singular 'port' instead of 'ports'
  • Not quoting port mappings causing YAML errors
  • Using wrong key like 'mapping'
3. Given this docker-compose.yml snippet:
version: '3'
services:
  app:
    image: myapp:latest
    environment:
      - DEBUG=true
    ports:
      - "5000:5000"
What will happen when you run docker-compose up?
medium
A. The container runs but port 5000 is not exposed
B. An error occurs because environment variables must be in key:value format
C. The image 'myapp:latest' is ignored and default image is used
D. A container named 'app' runs with DEBUG=true and port 5000 exposed

Solution

  1. Step 1: Analyze environment variable format

    Environment variables can be listed as strings like "DEBUG=true" in docker-compose.yml.
  2. Step 2: Check port mapping and image usage

    Port 5000 is correctly mapped and image 'myapp:latest' will be used to run the container.
  3. Final Answer:

    A container named 'app' runs with DEBUG=true and port 5000 exposed -> Option D
  4. Quick Check:

    Env vars as strings and ports mapped = container runs correctly [OK]
Hint: Env vars as strings and ports quoted work fine [OK]
Common Mistakes:
  • Thinking environment variables must be key:value pairs
  • Assuming ports need special syntax to expose
  • Believing image name is ignored if not official
4. Identify the error in this docker-compose.yml snippet:
version: '3'
services:
  db:
    image: postgres
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: example
medium
A. Port mapping should be quoted strings like "5432:5432"
B. Environment variables must be listed as a sequence, not mapping
C. The version '3' is invalid and should be '3.8'
D. The image name 'postgres' must include a tag

Solution

  1. Step 1: Check port mapping syntax

    Port mappings should be quoted strings like "5432:5432" to avoid YAML parsing errors.
  2. Step 2: Validate environment variable format

    Environment variables can be mappings like POSTGRES_PASSWORD: example, which is correct here.
  3. Final Answer:

    Port mapping should be quoted strings like "5432:5432" -> Option A
  4. Quick Check:

    Port mappings need quotes to parse correctly [OK]
Hint: Always quote port mappings to avoid YAML errors [OK]
Common Mistakes:
  • Not quoting port mappings
  • Confusing environment variable formats
  • Thinking version '3' is invalid
5. You want to run two services, web and db, where web depends on db. Which docker-compose.yml snippet correctly expresses this dependency and shares a volume named data between them?
hard
A. version: '3' services: web: image: webapp depends_on: - db db: image: postgres volumes: data: external: true
B. version: '3' services: web: image: webapp volumes: - data:/var/www/data db: image: postgres depends_on: - web volumes: - data:/var/lib/postgresql/data volumes: data:
C. version: '3' services: web: image: webapp depends_on: - db volumes: - data:/var/www/data db: image: postgres volumes: - data:/var/lib/postgresql/data volumes: data:
D. version: '3' services: web: image: webapp depends_on: - db volumes: - /data:/var/www/data db: image: postgres volumes: - /data:/var/lib/postgresql/data

Solution

  1. Step 1: Check dependency declaration

    web depends on db using depends_on with - db under web.
  2. Step 2: Verify volume sharing and declaration

    Both services use the named volume data mapped to their paths, and volumes: section declares data properly.
  3. Final Answer:

    version: '3' services: web: image: webapp depends_on: - db volumes: - data:/var/www/data db: image: postgres volumes: - data:/var/lib/postgresql/data volumes: data: -> Option C
  4. Quick Check:

    depends_on + named volume declared under volumes = correct [OK]
Hint: Use depends_on and declare shared volumes under volumes [OK]
Common Mistakes:
  • Reversing depends_on order
  • Using host paths instead of named volumes
  • Not declaring volumes section for named volumes
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