Как правильно указывать(хранить)пароли в docker-compose?
Универсальным рецептом на любую архитектуру является:
Хранение паролей в секретнице, например HashiCorp Vault

Приложение при инициализации идет за своим набором секретов по сети и создает подключения к БД, конфиги доступа к др ресурсам и прочее и хранит у себя... Все секьюрно и надежно

Если проще: передавайте секреты через переменные окружения при деплое. 
Локально — через .env файл. Docker-compose сервисы могут содержать параметр env_file: .env.test, если вам нужно точечно что-то сделать

Вы разве используете docker-compose для продакшн?
Если докер является частью вашего облака AWS/Azure - то надо читать их документацию. Обычно постащик облака всегда продает какой-то сейф (vault) для хранения секретов. И есть API через который можно читать содержимое этого сейфа.