services: app: user: "1000:1000" build: context: . dockerfile: Dockerfile args: PG_MAJOR: ${PG_MAJOR:-18} command: bash -c "bin/rails db:prepare && bin/rails server -b 0.0.0.0 -p 3000" ports: - "3000:3000" env_file: .env environment: RAILS_ENV: development APP_DATABASE: ${APP_DATABASE} APP_DATABASE_HOST: ${APP_DATABASE_HOST} APP_DATABASE_PORT: ${APP_DATABASE_PORT} APP_DATABASE_USERNAME: ${APP_DATABASE_USERNAME} APP_DATABASE_PASSWORD: ${APP_DATABASE_PASSWORD} volumes: - .:/app - bundle:/usr/local/bundle depends_on: db: condition: service_healthy db: image: postgres:${PG_MAJOR:-18} environment: POSTGRES_DB: ${APP_DATABASE} POSTGRES_USER: ${APP_DATABASE_USERNAME} POSTGRES_PASSWORD: ${APP_DATABASE_PASSWORD} volumes: - pgdata:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 2s timeout: 5s retries: 15 volumes: pgdata: bundle: