воскресенье, 3 мая 2015 г.

Развертывание проекта на Go в Heroku

В каком-то древнем году я зачем-то зарегистрировался на Heroku.
И с тех пор даже не представлял что там происходит и зачем это мне вообще. Но вот недавно в связи с изучением языка Go (golang) пришлось поискать платформы на которых можно развернуть проект на Go. Помимо Google Application Engine, оказалось, что Heroku тоже поддерживает Go.
И развертывание проекта в инфраструктуру Heroku осуществляется довольно быстро и удобно.

За основу поста взят материал книги Building Web Apps with Go, thanks Jeremy Saenz.

Я опускаю подробности по разработке на Go, ибо это достаточно популярно описано в вышеупомянутой книге, остановлюсь лишь на развертывании проекта, ибо это у меня получилось не сразу.

Итак, веб-проект на Go разворачивается в Heroku следующим образом:

1. Определимся с каталогом вашего проекта. Пусть это будет ~/go_proj/mygoproj/

2. В данном каталоге имеется файл main.go с кодом веб-приложения. Этот момент, кстати, я не прояснял до конца - как будет вести себя Heroku если файл будет называться как-то иначе или если Go-файлов будет несколько.

3. Переходим в каталог проекта
> cd ~/go_proj/mygoproj/
и создаем дополнительный файл - Procfile
> touch Procfile
Внимание! Создание .godir файла является устарешим подходом. Вместо этого используется Godep.

4. Предположим, что развертываемое приложение будет называться mywebapp
Тогда в Procfile заносим единственную строку:
web: mywebapp
Внимание! Создание .godir файла является устарешим подходом. Вместо этого используется Godep.
Ставим Godep:
> go get github.com/tools/godep
В каталоге проекта запускаем
> godep save -r
Godep переносит все ваши зависимости из путей $GOPATH в каталог Godeps/ проекта.
Опция -r форматирует код ваших go-файлов и изменяет пути импорта внешних библиотек.

После этого проект готов к развертыванию.

5. Создаем аккаунт Heroku - id.heroku.com/signup и устанавливаем полезную тузлу для развертывания - Heroku Toolbelt.

6. Если у вас еще не установлен Git - ставим.

7. В каталоге проекта создаем пустой репозиторий, добавляем в него файлы проекта (в том числе всё из каталога Godep) и коммитим:
git init
git add -A
git commit -m "Initial Commit"


8. Создаем приложение в Heroku командой
heroku create -b https://github.com/kr/heroku-buildpack-go.git

9. После успешного создания пушим первый коммит в мастер-ветку приложения:
git push heroku master

10. После удачного коммита запускаем приложение:
heroku open

11. В случае неожиданностей можно посмотреть логи:
heroku logs

12. Также ваше приложение становится видно в дашборде Heroku.
Вот и все. Далее можно модифицировать имеющиеся и добавлять новые файлы в проект и коммитить/пушить как обычно.

Более подробно процесс развертывания описан здесь.

Описание развертывания проекта в инфраструктуру Google Application Engine можно найти здесь.



Комментариев нет:

Отправить комментарий