О следующем шаге вы уже догадались. Нужно новый сервис "упаковать" в docker-контейнер.
Мы начали с простенького веб-приложения и разобрали базовые шаги в его публикации. Теперь пришло время немного усложнить наш учебный пример. В наши дни реальные проекты редко (читай "никогда") состоят только из одного сервиса, тем более когда так модны "микросервисы". Поэтому дальше мы разберемся как разрабатывать и публиковать много-модульные/сервисные проекты.
Замечательно, когда у вашего любимого провайдера есть готовые образы виртуальных машин с установленными docker-ом и docker compose-ом. Но если нет, то ничего страшного. Docker устанавливается по инструкции с официального сайта (сразу даю ссылочку на вариант установки из репозитория "Install using the apt repository"):
И так, мы с вами разобрались как "заворачивать" приложение в docker, как организовывать удобную работу с контейнерами с помощью docker compose (раз, два). Теперь пришло время попробовать эти знания в запуске приложения на виртуальном сервере.
Мы начали разбираться с Docker Compose на предыдущем шаге. Теперь хочется охватить чуть больше полезных фич этого инструмента, которые сильно помогут в разработке. Реальные проекты состоят нескольких приложений, программ, сервисов. В нашем случае мы рассмотрим следующий момент. Сервис при запуске ожидает настроенную схему базы данных Postgres. В режиме разработки мы при старте выполняли скрипты sql для создании таблиц. Но в "бою" такой подход не подойдет, так как у нас может одновременно запускаться несколько копий приложения или само приложение может состоять из нескольких сервисов. Обычно процедуру миграции (обновления) схемы базы данных выносят в отдельное приложение или используют для этого сторонний инструмент. На пример, если...
На предыдущих шагах (dev, Docker-изация) мы запускали контейнеры баз данных руками. Да, это полезно для понимания и тренировки, но не удобно в повседневной работе. Для сборки необходимого окружения одной командой есть Docker Compose - один файл описывает всё необходимое. Попробуем запустить всё наше приложение одни легким движением руки.
И так, у нас есть проект, подопытный кролик, который мы опубликовали нашими умелыми ручками на виртуальную машину с "настоящими" базами данных Postgres и Redis. В очевидной простоте (скачать исходники на виртуальную машину, собрать, настроить демона) есть и такие же очевидные недостатки:
И так, у нас есть проект в стадии разработки, и я хочу проверить как он будет разворачиваться на виртуальном сервере с подключением к реальным базам данным. Заодно, ещё раз потренируемся.
Для дальнейшего погружения в тонкости разворачивания проектов нам понадобится подопытный кролик - веб-проект с типичной архитектурой, но с простой бизнес логикой и легко читаемым кодом. Мне пришел в голову сервис, который "предсказывает" случайную погоду.
Наигравшись с тестовой виртуальной машиной, хороша идея - выключить и удалить её, чтобы денюшки не капали.