Это простой и дешевый способ развертывания и размещения приложений 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. Тогда в будущем вы сможете более прозрачно получать доступ к своим развернутым приложениям и делиться ими с кем угодно.
Я старался сделать это руководство как можно более простым, но мог упустить пару моментов.
С удовольствием отвечу на ваши вопросы в комментариях, если вы так считаете.
Надеюсь, я смогу рассказать о более интересных вещах о запуске собственного приложения в облаке в своих будущих постах.