Bird
Raised Fist0
Spring Bootframework~5 mins

Health checks in Docker in Spring Boot - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of a health check in Docker?
A health check in Docker helps to automatically verify if a container is running correctly and is ready to serve requests. It ensures the container is healthy and can restart or alert if it is not.
Click to reveal answer
beginner
How do you define a health check in a Dockerfile?
You use the HEALTHCHECK instruction in a Dockerfile to specify a command that tests the container's health. For example:
HEALTHCHECK --interval=30s CMD curl -f http://localhost:8080/actuator/health || exit 1
Click to reveal answer
beginner
What Spring Boot feature is commonly used to support Docker health checks?
Spring Boot Actuator provides an endpoint /actuator/health that returns the health status of the application. Docker health checks can call this endpoint to verify if the app is healthy.
Click to reveal answer
intermediate
What does Docker do if a health check fails repeatedly?
If a health check fails repeatedly, Docker marks the container as unhealthy. Depending on the orchestration setup, it can restart the container or notify the user to fix the issue.
Click to reveal answer
intermediate
Why is it important to set a proper interval and timeout for Docker health checks?
Setting a proper interval and timeout balances between timely detection of issues and avoiding unnecessary load on the container. Too frequent checks can cause overhead; too slow checks delay problem detection.
Click to reveal answer
Which Dockerfile instruction is used to add a health check?
ACHECKHEALTH
BHEALTHCHECK
CRUNHEALTH
DTESTHEALTH
What Spring Boot endpoint is typically used for Docker health checks?
A/actuator/health
B/healthcheck
C/status
D/check
What happens if a Docker container's health check fails multiple times?
ADocker ignores the failure
BDocker deletes the container
CDocker marks the container unhealthy
DDocker upgrades the container
Which command is a good example of a Docker health check for a Spring Boot app?
Acurl -f http://localhost:8080/actuator/health || exit 1
Bping localhost
Cls /app
Decho 'healthy'
Why should health checks not run too frequently?
ATo speed up container startup
BTo save disk space
CTo reduce network traffic
DTo avoid extra load on the container
Explain how to add a health check to a Spring Boot application running in Docker.
Think about how Docker verifies container health and how Spring Boot exposes health info.
You got /4 concepts.
    Describe what happens when a Docker container's health check fails repeatedly and why this is useful.
    Consider the benefits of automatic health monitoring.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What is the main purpose of adding a HEALTHCHECK instruction in a Dockerfile for a Spring Boot application?

      easy
      A. To let Docker monitor if the app is running correctly and restart if needed
      B. To speed up the app startup time inside the container
      C. To reduce the container size by removing unused files
      D. To automatically update the Spring Boot version inside the container

      Solution

      1. Step 1: Understand the role of HEALTHCHECK in Docker

        The HEALTHCHECK instruction tells Docker how to test if the container's app is healthy.
      2. Step 2: Connect HEALTHCHECK to app monitoring

        It helps Docker detect problems and restart the app if it stops working properly.
      3. Final Answer:

        To let Docker monitor if the app is running correctly and restart if needed -> Option A
      4. Quick Check:

        HEALTHCHECK monitors app health [OK]
      Hint: HEALTHCHECK = Docker watches app health and restarts if unhealthy [OK]
      Common Mistakes:
      • Thinking HEALTHCHECK speeds up app startup
      • Confusing HEALTHCHECK with image size optimization
      • Assuming HEALTHCHECK updates app versions automatically
      2.

      Which of the following is the correct syntax to add a health check in a Dockerfile for a Spring Boot app that exposes /actuator/health on port 8080?

      ?
      easy
      A. HEALTHCHECK RUN curl http://localhost:8080/actuator/health
      B. HEALTHCHECK CMD curl --fail http://localhost:8080/actuator/health || exit 1
      C. HEALTHCHECK CMD ping localhost:8080/actuator/health
      D. HEALTHCHECK EXEC curl http://localhost:8080/actuator/health

      Solution

      1. Step 1: Identify correct HEALTHCHECK syntax

        The HEALTHCHECK instruction uses CMD followed by a command that returns 0 on success or non-zero on failure.
      2. Step 2: Verify the command tests the health endpoint properly

        Using curl with --fail returns error if the endpoint is unhealthy, triggering Docker restart.
      3. Final Answer:

        HEALTHCHECK CMD curl --fail http://localhost:8080/actuator/health || exit 1 -> Option B
      4. Quick Check:

        HEALTHCHECK CMD + curl --fail = correct syntax [OK]
      Hint: Use HEALTHCHECK CMD with curl --fail for health endpoint [OK]
      Common Mistakes:
      • Using RUN instead of CMD in HEALTHCHECK
      • Using ping instead of curl for HTTP check
      • Using EXEC keyword which is invalid
      3.

      Given this Dockerfile snippet, what will Docker report as the container health status if the Spring Boot app's /actuator/health endpoint returns HTTP 500?

      HEALTHCHECK CMD curl --fail http://localhost:8080/actuator/health || exit 1
      medium
      A. healthy
      B. unknown
      C. starting
      D. unhealthy

      Solution

      1. Step 1: Understand curl --fail behavior on HTTP 500

        The curl --fail option causes curl to exit with error on HTTP status codes 400 or above.
      2. Step 2: Connect curl failure to Docker health status

        Since curl fails, the HEALTHCHECK command exits with 1, marking container as unhealthy.
      3. Final Answer:

        unhealthy -> Option D
      4. Quick Check:

        HTTP 500 triggers curl failure = unhealthy [OK]
      Hint: curl --fail fails on HTTP 500, so container becomes unhealthy [OK]
      Common Mistakes:
      • Assuming HTTP 500 still means healthy
      • Confusing 'starting' with unhealthy status
      • Thinking Docker ignores health check failures
      4.

      Identify the error in this Dockerfile health check instruction for a Spring Boot app:

      HEALTHCHECK CMD curl http://localhost:8080/actuator/health || exit 1
      medium
      A. Incorrect URL path for health endpoint
      B. Using CMD instead of RUN for HEALTHCHECK
      C. Missing --fail option in curl to detect HTTP errors
      D. Missing port number in the URL

      Solution

      1. Step 1: Check curl command correctness for health check

        Without --fail, curl returns success even if HTTP status is error (like 500).
      2. Step 2: Understand impact on Docker health status

        Docker will wrongly mark container healthy because curl does not fail on bad HTTP codes.
      3. Final Answer:

        Missing --fail option in curl to detect HTTP errors -> Option C
      4. Quick Check:

        curl needs --fail to detect HTTP errors [OK]
      Hint: Always add --fail to curl in HEALTHCHECK to catch errors [OK]
      Common Mistakes:
      • Using RUN instead of CMD in HEALTHCHECK
      • Wrong health endpoint URL
      • Forgetting port number in URL
      5.

      You want Docker to check your Spring Boot app health every 30 seconds, retry 3 times before marking unhealthy, and start checking only after 10 seconds of container start. Which HEALTHCHECK instruction correctly implements this?

      hard
      A. HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD curl --fail http://localhost:8080/actuator/health || exit 1
      B. HEALTHCHECK --interval=10s --timeout=30s --start-period=3s --retries=5 CMD curl --fail http://localhost:8080/actuator/health || exit 1
      C. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD curl http://localhost:8080/actuator/health || exit 1
      D. HEALTHCHECK CMD curl --fail http://localhost:8080/actuator/health || exit 1

      Solution

      1. Step 1: Match timing parameters to requirements

        Interval 30s means check every 30 seconds, start-period 10s delays first check, retries 3 means try 3 times before unhealthy.
      2. Step 2: Verify curl command correctness

        curl uses --fail to detect HTTP errors, with exit 1 to signal failure to Docker.
      3. Final Answer:

        HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD curl --fail http://localhost:8080/actuator/health || exit 1 -> Option A
      4. Quick Check:

        Correct timing + curl --fail = HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD curl --fail http://localhost:8080/actuator/health || exit 1 [OK]
      Hint: Set interval, retries, start-period explicitly with curl --fail [OK]
      Common Mistakes:
      • Mixing up interval and timeout values
      • Omitting --fail in curl command
      • Not setting start-period to delay checks
      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