Bird
Raised Fist0
Dockerdevops~10 mins

Environment variables in Compose in Docker - Interactive Code Practice

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

Complete the code to set an environment variable in a Docker Compose service.

Docker
services:
  web:
    image: nginx
    environment:
      - PORT=[1]
Drag options to blanks, or click blank then click option'
A5000
B8080
C3000
D80
Attempts:
3 left
💡 Hint
Common Mistakes
Using a port number that is not standard for HTTP.
Leaving the environment variable value empty.
2fill in blank
medium

Complete the code to use an environment variable from the host system in Docker Compose.

Docker
services:
  app:
    image: myapp
    environment:
      - API_KEY=[1]
Drag options to blanks, or click blank then click option'
A${API_KEY}
BAPI_KEY
C$API_KEY
D$$API_KEY
Attempts:
3 left
💡 Hint
Common Mistakes
Using just $API_KEY without braces.
Using the variable name as a plain string.
3fill in blank
hard

Fix the error in the environment variable syntax to correctly pass a variable with a default value.

Docker
services:
  db:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=[1]
Drag options to blanks, or click blank then click option'
A${POSTGRES_PASSWORD-defaultpass}
B$POSTGRES_PASSWORD-defaultpass
C${POSTGRES_PASSWORD:-defaultpass}
D$POSTGRES_PASSWORD:-defaultpass
Attempts:
3 left
💡 Hint
Common Mistakes
Missing the colon before the dash.
Using $ without braces for default values.
4fill in blank
hard

Fill both blanks to define environment variables using a .env file and override one variable inline.

Docker
services:
  api:
    image: myapi
    env_file:
      - [1]
    environment:
      - DEBUG=[2]
Drag options to blanks, or click blank then click option'
A.env
Bproduction.env
Ctrue
Dfalse
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong filename for the env_file.
Setting DEBUG to a string that is not recognized as boolean.
5fill in blank
hard

Fill all three blanks to create a service with environment variables from a file, inline variables, and a default fallback.

Docker
services:
  worker:
    image: workerapp
    env_file:
      - [1]
    environment:
      - LOG_LEVEL=[2]
      - RETRY_COUNT=[3]
Drag options to blanks, or click blank then click option'
Aworker.env
B${LOG_LEVEL:-info}
C${RETRY_COUNT:-3}
Ddefault.env
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect env file names.
Not using default value syntax for environment variables.

Practice

(1/5)
1. What is the main purpose of using environment in a Docker Compose file?
easy
A. To set environment variables inside containers
B. To define network settings for containers
C. To specify the container image version
D. To mount volumes from the host

Solution

  1. Step 1: Understand the role of environment variables

    Environment variables allow customization of container behavior without changing the container image or code.
  2. Step 2: Identify what environment does in Compose

    The environment key in Docker Compose sets these variables inside the container at runtime.
  3. Final Answer:

    To set environment variables inside containers -> Option A
  4. Quick Check:

    environment sets variables = C [OK]
Hint: Remember: environment = variables inside container [OK]
Common Mistakes:
  • Confusing environment with network or volume settings
  • Thinking environment sets image versions
  • Mixing environment with Dockerfile commands
2. Which of the following is the correct syntax to pass an environment variable named API_KEY with value 12345 in a Docker Compose service?
easy
A. set_env: - API_KEY: 12345
B. environment: - API_KEY=12345
C. variables: API_KEY=12345
D. env: API_KEY: 12345

Solution

  1. Step 1: Recall Docker Compose environment syntax

    Docker Compose uses the environment key with a list or dictionary to set variables.
  2. Step 2: Match correct syntax for list format

    The correct list format is environment:\n - API_KEY=12345. Other keys like env, variables, or set_env are invalid.
  3. Final Answer:

    environment: - API_KEY=12345 -> Option B
  4. Quick Check:

    Correct key and list syntax = D [OK]
Hint: Use 'environment:' with dash and equals for variables [OK]
Common Mistakes:
  • Using wrong keys like env or variables
  • Mixing colon and equals signs incorrectly
  • Indentation errors in YAML
3. Given this Compose snippet:
version: '3'
services:
  app:
    image: myapp
    environment:
      - MODE=${APP_MODE}
If the host environment variable APP_MODE is set to production, what will be the value of MODE inside the container?
medium
A. MODE
B. ${APP_MODE}
C. production
D. undefined

Solution

  1. Step 1: Understand variable substitution in Compose

    Compose replaces ${APP_MODE} with the value of the host environment variable APP_MODE when starting containers.
  2. Step 2: Apply substitution with given host variable

    Since APP_MODE is set to production on the host, MODE inside the container will be production.
  3. Final Answer:

    production -> Option C
  4. Quick Check:

    Host var substitution = production [OK]
Hint: Host vars replace ${VAR} in Compose environment [OK]
Common Mistakes:
  • Thinking ${APP_MODE} stays as literal string
  • Assuming variable is undefined inside container
  • Confusing container env with host env
4. You wrote this Compose snippet:
services:
  web:
    image: nginx
    environment:
      - PORT: 80
But the container does not get the PORT variable set. What is the error?
medium
A. Missing quotes around 80
B. environment key should be under volumes
C. Image name is incorrect
D. Using colon instead of equals sign in environment list

Solution

  1. Step 1: Check environment variable syntax in list form

    When using a list under environment, variables must be in KEY=VALUE format, not KEY: VALUE.
  2. Step 2: Identify the error in the snippet

    The snippet uses - PORT: 80 which is invalid YAML for a list item; it should be - PORT=80.
  3. Final Answer:

    Using colon instead of equals sign in environment list -> Option D
  4. Quick Check:

    List env vars use = not : [OK]
Hint: Use '=' for list env vars, ':' only in dict format [OK]
Common Mistakes:
  • Mixing list and dictionary syntax for environment
  • Thinking quotes are mandatory for numbers
  • Placing environment under wrong keys
5. You want to pass a default value for an environment variable LOG_LEVEL in Compose if the host variable is unset or empty. Which syntax correctly sets LOG_LEVEL to info by default?
hard
A. environment: - LOG_LEVEL=${LOG_LEVEL:-info}
B. environment: LOG_LEVEL: info
C. environment: - LOG_LEVEL=info
D. environment: - LOG_LEVEL=${LOG_LEVEL-info}

Solution

  1. Step 1: Understand Compose variable default syntax

    Compose supports shell-style default values using ${VAR:-default} to use default if VAR is unset or empty.
  2. Step 2: Identify correct syntax for default

    ${LOG_LEVEL:-info} sets LOG_LEVEL to host value if set, else info. Other options either ignore host variable or use incorrect syntax.
  3. Final Answer:

    environment: - LOG_LEVEL=${LOG_LEVEL:-info} -> Option A
  4. Quick Check:

    Use ${VAR:-default} for defaults [OK]
Hint: Use ${VAR:-default} to set default env var in Compose [OK]
Common Mistakes:
  • Using ${VAR-default} which does not handle empty values
  • Setting static value ignoring host variable
  • Wrong YAML indentation or syntax
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