Он же пишет 'Connection refused' - значит когда он стартует БД еще не готова принять соединение. Если думали, что это:
depends_on:
- main_db
спасает от этого - увы нет. Чтобы сервис стартовал нормально нужно проверять готовность БД:
services:
mysql:
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "mysql", "-p${DB_PASSWORD:-secret}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
а сервис стартовать по готовности БД:
main_queue:
depends_on:
mysql:
condition: service_healthy
restart: true