Развертывание приложения Heroku одним нажатием кнопки golang с docker - PullRequest
0 голосов
/ 15 апреля 2020

Я довольно новичок в heroku и хочу предложить людям легко установить мое приложение на свой собственный экземпляр с помощью кнопки «Deploy to heroku», как описано здесь https://devcenter.heroku.com/articles/heroku-button.

Я теперь создал app.json в моей ветке разработки: https://github.com/scribble-rs/scribble.rs/blob/develop/app.json

{
  "name": "Scribble.rs",
  "description": "A multiplayer drawing game for the browser",
  "repository": "https://github.com/scribble-rs/scribble.rs",
  "keywords": ["game", "multiplayer", "ephemeral"]
}

Однако на самом деле тестируем кнопку, вызывая https://dashboard.heroku.com/new?template=https%3A%2F%2Fgithub.com%2Fscribble-rs%2Fscribble.rs%2Ftree%2Fdevelop В результате Heroku запустит процедуру сборки по умолчанию для go -проектов. Однако из-за того, что полученный бинарный файл не содержит ресурсов, необходимых для запуска приложения, приложение будет собираться, но при запуске будет sh.

Чтобы это исправить, я бы вместо этого нужно запустить его с docker -buildpack. Однако я не смог найти никакой документации по этому конкретному c сценарию использования, хотя он казался довольно общим. Для развертывания через GitHub с помощью GitHub-соединения на вкладке «Развертывание» приложения вы можете указать heroku.yml, что я и сделал: https://github.com/scribble-rs/scribble.rs/blob/develop/heroku.yml

build:
  docker:
    web: Dockerfile

Однако в случае развертывания по щелчку этот файл, похоже, игнорируется, и вместо этого я должен явно указать пакет сборки через app.json. Хотя я нашел несколько репозиториев GitHub с docker -buildpacks, мне не понравилось это решение, так как я должен был доверять некоторому случайному репозиторию, который в любой момент мог либо сломаться, либо испортить sh.

Как лучше всего go решить эту проблему?

1 Ответ

0 голосов
/ 16 апреля 2020

Похоже, вы должны указать stack внутри app.json. Это было не совсем понятно, прочитав документы: https://devcenter.heroku.com/articles/app-json-schema#stack

Я установил это на:

"stack": "container"
...