Start the App Only When the Database Is Ready

medium 20 XP ~7 minHands-on lab

Labs have no container engine, so nothing is built or started: your files are checked by reading them, the way a reviewer or a CI linter would. docker-compose config (to validate Compose files) and hadolint (a Dockerfile linter) are installed.

docker compose up on /home/student/projects/auth-api/compose.yaml often fails: web starts before PostgreSQL accepts connections and crashes.

Task

Change compose.yaml so that:

  • db has a health check running pg_isready -U auth-api every 5s, with a 3s timeout and 10 retries
  • web waits until db is healthy before starting
  • web restarts automatically unless it was stopped by hand (unless-stopped)
  • everything else stays as it is, and docker-compose config accepts the file

About this machine

Ubuntu 24.04 with no internet access. You are student with passwordless sudo. The grader checks the final state of the machine, not the commands you typed. Values like names and ports are generated for you.

TerminalNot started

Your machine is ready to start

Create a free account to open a machine and get graded.