Работая над приложением Ruby, использующим Heroku CLI для развертывания, я наткнулся на проблему, пытаясь интегрировать все это в архитектуру рабочего процесса Docker Compose и архитектуру микросервисов.
Короче говоря, я запускаю контейнер, который запускает команду: heroku local:start -p 5000
(запустите локальный сервер Heroku и откройте порт 5000, чтобы приложение Heroku было доступно по адресу http://localhost:5000).
Я привязываюсь к порту 5000 контейнера к порту 5000 на хост-компьютере. Когда я захожу на хост-компьютер http://localhost:5000, я не могу получить доступ к приложению Heroku. То же самое работает отлично, если я запускаю команду в среде, отличной от Docker.
У меня большой опыт работы с Docker и переадресацией портов, поэтому я почти уверен, что проблема не в файле compose, а в том, как перенаправляются порты. Похоже, проблема связана с интерфейсом командной строки Heroku и тем, как он предоставляет порт для среды, в которой он работает.
Чтобы воспроизвести проблему, просто извлеките этот коммит и запустите docker-compose up
: https://github.com/Dzhuneyt/12factor/commit/5bdfc417ce57eb916c42fdc76bae51e4df30549c