Развертывание:
Heroku — достаточно крутой сервис. У них есть свой собственный cli, который включает в себя множество консольных инструментов, в том числе для работы с git, docker и ssh. И есть несколько способов деплоя приложения:
- Деплой непосредственно в dynos-ы — легкие изолированные контейнеры (environments) с использованием готовых buildpack-ов. На странице быстрого старта есть достаточно простые инструкции, которые позволят автоматически развернуть бойлерплейт популярного фреймворка с со страницы хероку на гитхабе, внести несколько изменений и задеплоить на сервер (например, для джанго). Особенности:
- Деплой статики через
whitenoise
- Медиа файлы (и, вероятно, файлы в целом) не сохраняются в контейнере (не проверено)
- Не поддерживает sqlite (не проверено)
- Дефолтная бд —
postgresql
- Дополнительные сервисы системы можно устанавливать только в рамках существующих
buildpack
-ов
- Деплой статики через
- Деплой через docker — это деплой готового докер-контейнера.
Список основных команд:
heroku login
— залогиниться на сервере heroku с локальной машиныheroku create [--buildpack heroku/buildpackname]
— создать новое приложение heroku: cоздает новое приложение c репозиторием на сервере heroku и одновременно добавляет ссылку на удаленный репозиторий в локальный git remotegit push heroku main
— обычнаяgit push
команда, которая отправит на heroku изменения и автоматически запустить pipline (для django по дефолтуpip install -r requirements && python manage.py collectstatic
и запуск/перезапуск веб-сервера (по дефолтуgunicorn
))heroku logs --tail
— показать последние логи с сервера (терминальную сессию)heroku ps
— показывает остаток по месячной квоте и список запущенных процессовheroku ps:scale web=1
— запустить buildpack, указав явно тип;heroku ps:scale web=0
— остановить buildpack c явным указанием типа, предопределенного в Procfile.heroku open
— открыть приложение в браузереheroku local web
— запустить web buildpack локально на сервере разработкиheroku addons
— посмотреть расширения (addons) приложения на heroku (по дефолту только postresql). Addons — это преопределнные доступные удаленные сервисы на хероку, которые работают независимо от вашего dynos (либо контейнера)heroku addons:create <add-on name>
— добавить add-on.heroku run <cmd>
— запустить linux приложение или shell скрипт в терминале dynos, перенаправив ввод/вывод на текущий терминалheroku config:set VARNAME=value [-a <appname>]
— устанавливает переменную окружения на сервере [для конкретного приложения, напримерblooming-hollows-52049
]heroku config
— посмотреть все переменные окружения. По дефолту содержитDATABASE_URL
c атрибутами дефолтной базы данныхheroku pg
— посмотреть детальную информацию об используемой базе данных (postgres). См так же heroku pg:psqlheroku buildpacks:set <heroku/buildpack_name>
— установка buildpack для приложенияheroku buildpacks:remove <heroku/buildpack_name>
— удалить buildpack из приложенияheroku buildpacks:clear
— сбросить на дефолтный buildpackheroku buildpacks:add --index 1 <heroku/nodejs>
— добавить дополнительный пакет сборкиheroku buildpacks
— посмотреть все установленные buildpack-и текущего приложенияheroku help buildpacks
— справка по командеbuildpacks
;heroku plugins:install heroku-builds
— установка плагина (не должен превышать квоты 500 мб)heroku container:login
— авторизоваться в реестре контейнеров herokuheroku container:release [-a evening-tundra-50688 web]
— полагаю, что запустить контейнер [для конкретного приложения с указанным типом]heroku stack
— посмотреть какой стэк использует ваше приложениеheroku stack:set <stackname> -a <appname>
— установить стэк для приложения, например `heroku stack:set container -a evening-tundra-50688`- `heroku update beta` — обновить heroku до beta (либо обновить канал бета (прим. переводчика))
- `heroku git:remote -a <appname>` — насколько я понял, добавить ссылку на удаленный репозиторий хероку в приложение
- `heroku auth:token` — авторизоваться через сторонний сервис
Особенности бесплатного хостинга:
- ограничение по времени работы до 550 часов в месяц
- сервер засыпает после секунд простоя, следующий запрос будет дольше (вероятно, несколько секунд)
- ограниченный размер — до 500 мб
- домен третьего уровня (можно докупить отдельно)
Дополнительно:
- Buildpack для selenium;
- Buildpack chromedriver;
- Buildpack google chrome;
Полезные ссылки:
- Деплой на heroku джанги через докер
- Какой-то плагин для развертывания приложений джанго на heroku (не испытывал)