Когда Heroku объявил о своих (вполне разумных) новых лимитах на бесплатные приложения, я понял, что мне нужно будет найти другой источник хостинга для всех небольших проектов с низким трафиком, которые у меня в настоящее время запущены на Heroku. В свое время Heroku была полностью бесплатна для приложений, для которых требовался только один динамо, но после многих лет жестокого обращения со стороны таких придурков, как я, они отказались от этого, и в конечном итоге бесплатные приложения могли работать в течение 18 из 24 часов в день (что нормально для прототипов с низким трафиком) и с 1 июня предоставление общего пула бесплатных часов.
Поскольку у меня есть такое необоснованное количество приложений, работающих на Heroku, я подумал, что пора попробовать Dokku . Dokku — это Heroku-подобный инструмент, который позволяет вам развертывать сложные приложения, просто нажимая на Git. Он напрямую поддерживает пакеты сборки Heroku, так что вы можете без проблем переходить между существующими приложениями, а также имеет ряд плагинов для хранилищ данных и других компонентов. И, к счастью, Digital Ocean предоставляет предварительно установленный образ Dokku , который избавит вас от необходимости устанавливать Dokku самостоятельно; Вы можете просто раскрутить сервер и начать Dokku-ing прямо сейчас! В этой статье мы расскажем, как настроить сервер Dokku в DigitalOcean с собственным корневым доменом и развернуть на нем простой статический сайт.
Различия между Докку и Героку
- Dokku требует хотя бы некоторого уровня комфорта при работе на собственных серверах; вам, возможно, придется изменить конфигурации nginx, вручную настроить некоторые плагины или обратиться к системным инструментам для отладки.
- Dokku использует Docker , который является хорошей платформой, но может добавить дополнительный уровень сложности к установке сервера.
- Dokku требует root-доступа к VPS для установки плагинов, запуска команд и т. Д.
Короче говоря, вам нужно будет выполнить немного больше настроек командной строки в Dokku, чем в Heroku — ничего такого, что вы не сможете найти по пути, но вам, возможно, придется немного почитать.
Создание Dokku-сервера в DigitalOcean
Сначала войдите в DigitalOcean и перейдите по этой ссылке, чтобы создать новый сервер в DigitalOcean с помощью предварительно установленного приложения Dokku. Для Dokku требуется как минимум 1 ГБ ОЗУ, но 10 долл. США в месяц для размещения всех ваших вещей — довольно небольшая цена
В качестве имени хоста введите базовый домен, который вы хотите использовать для размещения своих приложений. Приложения <appname>.<hostname>
умолчанию появятся в <appname>.<hostname>
(например, myapp.example.com
). Убедитесь, что вы являетесь владельцем этого домена и зарегистрируйте его, если вам нужно!
Настройка домена
Вы захотите связать домен с вашим сервером Dokku. Просто установите запись A для вашего домена, указывающую на IP вашего сервера.
В оставшейся части этой статьи предполагается, что вы зарегистрировали example.com
для этой цели.
Мы <appname>.example.com
все так, чтобы ваши приложения появлялись на <appname>.example.com
. Для этого вам нужно добавить несколько DNS-записей для вашего домена:
- создайте пустую запись, указывающую на IP вашего сервера
- создать подстановочный знак (
*
) Запись, указывающая на тот же IP-адрес.
После разрешения DNS вы можете продолжить чтение этого урока.
Если вы хотите разместить приложение в другом домене, вы можете:
- назовите приложение как
otherdomain.com
при его создании, что скажет Dokku использовать этот домен, или - настройте запись DNS CNAME на
www.otherdomain.com
указывая наmyapp.example.com
.
Создание вашего первого приложения
SSH на ваш сервер и запустите следующее:
$ dokku apps:create example.com
Это создаст приложение под названием «example.com» на вашем сервере. Это приложение, которое появится в корне вашего домена; так как у него есть .
в нем Dokku интерпретирует его как доменное имя и настраивает себя соответствующим образом. Для будущих приложений вы можете просто dokku apps:create appname
, и appname.example.com
будет их хостом.
Что-то, что вы можете сделать, это разместить статический сайт на example.com
. Это позволит вам легко обновлять его, особенно если вы используете статический конструктор сайтов, такой как middleman или jekyll .
Эта возможность встроена в Dokku через удобный buildpack-nginx . Чтобы установить его, в корне проекта создайте пустой файл с именем .static
( $ touch .static
). Вот как buildpack обнаруживает статический сайт. Когда вы нажимаете это на Dokku, он должен обнаружить, что вы создаете статический сайт, и действовать соответствующим образом.
Ваш проект может быть таким же простым, как файл index.html
, содержащий все, что вы хотите. Создайте новый репозиторий git с помощью git init
и добавьте в него index.html
, .static
и .env
. Затем добавьте Dokku в качестве удаленного:
git remote add dokku [email protected]:example.com
Теперь вы сможете развернуть с помощью простого git push:
git push dokku master
Вы должны увидеть, как Dokku настраивает контейнер для вашего приложения (обнаруживает статический сборочный пакет), а когда вы переходите на example.com
вы должны увидеть созданный там файл index.html
.
Следующие шаги
Если у вас есть какие-либо существующие приложения Heroku, вы можете просто добавить пульт git push dokku master
с помощью Git и запустить git push dokku master
.
Вам может понадобиться настроить какую-либо базу данных. К счастью, проект Dokku в настоящее время поддерживает множество плагинов хранилищ данных , включая Postgres, Mongo и Mysql. Все они очень просты в установке и использовании.
Если у вас есть какие-либо проблемы, документы Dokku очень просты и понятны.