services: postgres: image: postgres:16 environment: POSTGRES_DB: ${DB_NAME:-course_registration} POSTGRES_USER: ${DB_USERNAME:-course} POSTGRES_PASSWORD: ${DB_PASSWORD:-course} ports: - "127.0.0.1:${DB_EXPOSE_PORT:-5432}:5432" volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME:-course} -d ${DB_NAME:-course_registration}"] interval: 5s timeout: 3s retries: 20 app: build: context: . environment: SPRING_PROFILES_ACTIVE: dev SERVER_ADDRESS: 0.0.0.0 SERVER_PORT: 8080 DB_HOST: postgres DB_PORT: 5432 DB_NAME: ${DB_NAME:-course_registration} DB_USERNAME: ${DB_USERNAME:-course} DB_PASSWORD: ${DB_PASSWORD:-course} APP_SEED_ENABLED: ${APP_SEED_ENABLED:-true} SWAGGER_ENABLED: ${SWAGGER_ENABLED:-true} ports: - "127.0.0.1:${APP_PORT:-8080}:8080" depends_on: postgres: condition: service_healthy healthcheck: test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8080/actuator/health"] interval: 10s timeout: 3s retries: 20 volumes: postgres-data: