Bird
Raised Fist0
Dockerdevops~5 mins

Environment variables in Compose in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of environment variables in Docker Compose?
Environment variables in Docker Compose allow you to set dynamic values for configuration, such as ports, passwords, or service names, making your setup flexible and reusable.
Click to reveal answer
beginner
How do you define environment variables directly inside a docker-compose.yml file?
You use the environment key under a service, listing variables as key-value pairs, for example:
environment:
- VAR_NAME=value
- ANOTHER_VAR=another_value
Click to reveal answer
intermediate
What is the role of an .env file in Docker Compose?
An .env file stores environment variables outside the Compose file. Docker Compose automatically loads it to substitute variables in the docker-compose.yml file, helping keep secrets or settings separate.
Click to reveal answer
intermediate
How can you reference an environment variable inside the docker-compose.yml file?
You use the syntax ${VARIABLE_NAME} to insert the value of an environment variable defined in the shell or .env file into the Compose file.
Click to reveal answer
intermediate
What happens if an environment variable used in docker-compose.yml is not set?
If a variable is not set and no default is provided, Docker Compose will replace it with an empty string, which may cause errors or unexpected behavior in your services.
Click to reveal answer
Which key in docker-compose.yml is used to set environment variables for a service?
Avariables
Benvironment
Cenv_vars
Dsettings
Where does Docker Compose look for environment variables to substitute in the Compose file by default?
AIn the .env file in the same directory
BIn the Dockerfile
CIn the system PATH variable
DIn the docker-compose.override.yml file
How do you reference an environment variable named PORT in docker-compose.yml?
A${PORT}
B$PORT
C%PORT%
D#PORT#
What is the effect of setting environment variables inside the environment section of a service?
AThey update the docker-compose.yml file automatically
BThey change the host machine's environment
CThey become available inside the running container
DThey modify the Docker daemon settings
If an environment variable is missing and no default is set, what does Docker Compose do?
AUses a random value
BThrows an error and stops
CPrompts the user to enter a value
DReplaces it with an empty string
Explain how environment variables are used in Docker Compose and why they are helpful.
Think about how you can change settings without editing the Compose file directly.
You got /3 concepts.
    Describe the difference between setting environment variables in the environment section and using an .env file in Docker Compose.
    One affects the container runtime, the other affects Compose file processing.
    You got /3 concepts.

      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