У меня есть приложение nodejs express, обслуживающее сайт. Я развернул его с помощью Heroku, используя buildpack / nodejs и Github. Каждый раз, когда я нажимаю на Github, Heroku обнаруживает нажатие и запускает скрипт запуска npm.

Проблема в том, что мне нужно перейти к образу Docker, содержащему приложение nodejs. Я сделал это, и он работает локально, я могу запустить его с docker run -d -p 8000:8000 exporter, и он работает.

Я добавил файл docker.yml в корневую папку и нажал на Github. Но heroku все еще запускает скрипт npm в package.json, игнорируя docker.yml.

Есть ли способ заставить герою создавать контейнер из Dockerfile каждый раз, когда я отправляю на Github?

1
EuberDeveloper 11 Фев 2020 в 01:46

2 ответа

Лучший ответ

Благодаря ответу Тейлора Кокрана мне удалось решить проблему.

Сначала я попытался перейти по этой ссылке: https://devcenter.heroku.com/ статьи / контейнеры -реестр и - среда

Это сработало, но я должен был сделать это из кли.

После этого я удалил весь проект и переделал его. Я следовал указаниям Тейлора Кохрана и оттолкнулся от герою кли. Я увидел, что это работает, и затем добавил развертывание github. И теперь каждый раз, когда я нажимаю на Github, новый контейнер Docker автоматически собирается и развертывается Heroku.

NB. Я изменил web: docker run -d -p 8000:8000 exporter на npm start

1
EuberDeveloper 11 Фев 2020 в 00:17

Чтобы Heroku понял ваш файл heroku.yml, вам нужно несколько вещей. Прежде всего вы должны убедиться, что Dockerfile находится в корневом каталоге. Во-вторых, вам нужно убедиться, что вы создаете и работаете в среде докера. Наконец, убедитесь, что вы установили свой стек герою docker.

Итак, учитывая, что мы хотим убедиться, что дерево каталогов выглядит так:

|-my_app
     |-app_contents
|-Dockerfile
|-heroku.yml
|-etc...

И что файл heroku.yml выглядит примерно так:

build:
   docker:
      web: Dockerfile
run:
   web: docker run -d -p 8000:8000 exporte

И наконец запустите это в своем репозитории

heroku stack:set container

Тогда просто убедитесь, что вы продвигаете свои изменения вверх.

Если это не поможет Я бы порекомендовал обновить ваш пост следующим:

  1. Файловое дерево
  2. Dockerfile
  3. Файл heroku.yml
2
Taylor Cochran 10 Фев 2020 в 23:20