Невозможно использовать Heroku CLI в среде Docker - PullRequest
0 голосов
/ 15 апреля 2019

Работая над приложением 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

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Я считаю, что это сработает, если вы свяжетесь с 0.0.0.0

# Procfile
web: bundle exec ruby web.rb -p $PORT -o 0.0.0.0

Кроме того, для удобства, чтобы избежать перестроения при каждом цикле отладки, я бы добавил монтирование тома:

# docker-compose.yml
version: '3'

services:
  web:
    build: ./
    volumes:
      - .:/usr/src/app
    ports:
      - "5000:5000"
0 голосов
/ 15 апреля 2019

Просто чтобы проверить основы; Когда вы запускаете службу и ждете несколько секунд, Docker PS показывает, что служба запущена? Если нет, то предоставляет ли 'docker logs {service_name}' какой-либо вывод? Похоже, у вас правильная конфигурация сети / порта; Вот почему я сосредоточен на выводе сервиса. Однако, если служба работает, вы можете 'telnet localhost 5000' и получить успешное соединение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...