Это простой и дешевый способ развертывания и размещения приложений NodeJ, Python, Java или Ruby в облаке практически без навыков DevOps.

Я не смог найти полное руководство по размещению собственного приложения в облаке. Поэтому, потратив некоторое время на исследования и выполнение этого самостоятельно, я подумал, что было бы полезно собрать всю эту информацию здесь для себя в будущем и, конечно же, для всех читателей Better Programming.

Я использую провайдера Hetzner Cloud для размещения своего проекта. Если вам интересно, почему, посмотрите мою предыдущую статью, где я сравниваю другие популярные варианты.

1. Войдите в Hetzner и получите Linux VPC

Сначала вам необходимо зарегистрироваться и назначить способ оплаты. Когда я когда-то делал это сам, меня попросили предъявить удостоверение личности и кредит в размере 20 долларов для активации моей учетной записи. Не волнуйся; он будет использоваться для ваших будущих счетов в Hetzner. Процесс регистрации довольно понятен, но если вам нужно пошаговое руководство, вот вам:



* Не пропустите настройку ключа SSH. В противном случае вы не сможете подключиться к своему серверу. Даже если вы это сделали, удалите его и снова запустите новый сервер. Здесь это займет всего пару минут.

2. Установите Докку

Dokku — это PaaS с открытым исходным кодом для автоматизации создания контейнеров Docker, ведения журналов, управления базами данных, развертывания Git и т. д. Это все, что вам нужно для запуска вашего приложения на удаленном сервере. Dokku отлично справляется с автоматизацией многих задач DevOps по нулевой цене.

Новый сервер от Hetzner — это не более чем пустая удаленная машина (VPC). С этого момента вам нужно будет использовать SSH для подключения к вашему серверу и выполнить все необходимые настройки. Выполните следующие команды одну за другой, чтобы установить Dokku:

ssh root@<ip-address>

где ‹ip-адрес› — это IPv4-адрес вашего вновь созданного сервера из панели управления Hetzner Cloud.

wget https://raw.githubusercontent.com/dokku/dokku/v0.27.5/bootstrap.sh

где v0.27.5 — последняя версия Dokku. К тому времени, как вы это прочтете, там может быть более новая версия, поэтому отметьте это и используйте последнюю версию.

sudo DOKKU_TAG=v0.27.5 bash bootstrap.sh

Теперь вы можете назначить свой «интернет-адрес» (доменное имя) вашему будущему приложению. Если у вас нет своего доменного имени, его можно настроить позже. Сейчас я буду использовать IP-адрес.

dokku domains:set-global <ip-address or domain-name>

где ‹ip-адрес› — это IPv4-адрес вашего вновь созданного сервера из панели управления Hetzner Cloud.

* Если вы столкнулись с ошибками во время вышеуказанной установки, попробуйте следовать другому руководству, особенно из этого шага, так как оно может содержать более подробные объяснения и примеры.

3. Создайте инфраструктуру своего приложения

Если вы используете один из следующих языков программирования:

  • Рубин
  • Node.js
  • Кложур
  • Питон
  • Джава
  • Скала
  • PHP

Тогда вам повезло, поскольку Dokku выполняет автоматическое определение с помощью пакетов сборки и в этом случае автоматизирует многие задачи для вас. (сборка, запуск, создание сети и проверка работоспособности).

Выполните следующие команды при подключении к облачному серверу Hetzner по SSH (те же окна, что и для всех предыдущих команд):

dokku apps:create <your-supper-app-name>
dokku mongo:create <your-db-name>
dokku mongo:link <your-db-name> <your-supper-app-name>

В приведенном выше примере я использую MongoDB, но вы можете выбрать любой другой движок базы данных, такой как MySQL или Postgress, если они доступны в плагинах Dokku.

Самое замечательное здесь то, что теперь вы можете создавать и размещать столько приложений, сколько хотите, если у вас достаточно мощности сервера. Все это возможно благодаря контейнерам Dockers, которые Dokku использует под капотом.

4. Отпустите

Самый простой способ выпустить ваше приложение и развернуть любые будущие обновления — это сохранить исходный код на GitHub и создать свой личный токен доступа. Все это бесплатно даже с частными репозиториями (не с открытым исходным кодом).

dokku git:allow-host github.com
dokku git:auth github.com <your-github-username> <your-github-access-token>
dokku git:sync --build <your-supper-app-name> <your-github-repository-url>

Dokku может запускать автоматическое развертывание с каждым вашим коммитом, но я предпочитаю этого не делать и иметь больше контроля над тем, куда развертывать мои изменения с помощью команды dokku git:sync. Если все в порядке, вы сможете увидеть журналы приложений здесь:

dokku logs <your-supper-app-name> -t

Проверьте мой репозиторий GitHub для полного примера процесса развертывания приложения Java.

Последние мысли

Вот как вы можете разместить несколько приложений в облаке с дешевым начальным тегом и легко обновлять и масштабировать его в будущем с помощью сервера Hetzner, на котором работает Dokku.

Несмотря на то, что здесь это не рассматривается и является необязательным, я рекомендую вам купить дешевое доменное имя и использовать его с Dokku. Тогда в будущем вы сможете более прозрачно получать доступ к своим развернутым приложениям и делиться ими с кем угодно.

Я старался сделать это руководство как можно более простым, но мог упустить пару моментов.

С удовольствием отвечу на ваши вопросы в комментариях, если вы так считаете.

Надеюсь, я смогу рассказать о более интересных вещах о запуске собственного приложения в облаке в своих будущих постах.