Docker compose services with health checks
If you need to add extra checks for services to be up and running before starting another one, you can use healtcheck property:
services:
pg:
image: pg/pg-12
ports:
- 5432:5432
healtcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:5.0.4-alpine
ports:
- 6380:6379
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 5s
timeout: 5s
retries: 5
app:
image: railsapp
depends_on:
pg:
condition: service_healthy
redis:
condition: service_healthy
ports: ['3000:3000']
command: |
bash -c "bundle exec rails s"