Анатолий Северин
@deploy2production
.NET разработчик. Рассказываю про деплой в прод.
25 posts
Pinned

Привет.

Этот блог отвечает на вопрос: "Как весь мир увидит мой сайт?"

WeatherForecast. Ads. Docker.

О следующем шаге вы уже догадались. Нужно новый сервис "упаковать" в docker-контейнер.

WeatherForecast. Сервисы. Dev.

Мы начали с простенького веб-приложения и разобрали базовые шаги в его публикации. Теперь пришло время немного усложнить наш учебный пример. В наши дни реальные проекты редко (читай "никогда") состоят только из одного сервиса, тем более когда так модны "микросервисы". Поэтому дальше мы разберемся как разрабатывать и публиковать много-модульные/сервисные проекты.

WeatherForecast. Виртуальная машина. Docker.

Замечательно, когда у вашего любимого провайдера есть готовые образы виртуальных машин с установленными docker-ом и docker compose-ом. Но если нет, то ничего страшного. Docker устанавливается по инструкции с официального сайта (сразу даю ссылочку на вариант установки из репозитория "Install using the apt repository"):

WeatherForecast. Container Registry.

И так, мы с вами разобрались как "заворачивать" приложение в docker, как организовывать удобную работу с контейнерами с помощью docker compose (раз, два). Теперь пришло время попробовать эти знания в запуске приложения на виртуальном сервере.

WeatherForecast. Setup.

Мы начали разбираться с Docker Compose на предыдущем шаге. Теперь хочется охватить чуть больше полезных фич этого инструмента, которые сильно помогут в разработке. Реальные проекты состоят нескольких приложений, программ, сервисов. В нашем случае мы рассмотрим следующий момент. Сервис при запуске ожидает настроенную схему базы данных Postgres. В режиме разработки мы при старте выполняли скрипты sql для создании таблиц. Но в "бою" такой подход не подойдет, так как у нас может одновременно запускаться несколько копий приложения или само приложение может состоять из нескольких сервисов. Обычно процедуру миграции (обновления) схемы базы данных выносят в отдельное приложение или используют для этого сторонний инструмент. На пример, если...

WeatherForecast. Docker Compose.

На предыдущих шагах (dev, Docker-изация) мы запускали контейнеры баз данных руками. Да, это полезно для понимания и тренировки, но не удобно в повседневной работе. Для сборки необходимого окружения одной командой есть Docker Compose - один файл описывает всё необходимое. Попробуем запустить всё наше приложение одни легким движением руки.

WeatherForecast. Docker-изация.

И так, у нас есть проект, подопытный кролик, который мы опубликовали нашими умелыми ручками на виртуальную машину с "настоящими" базами данных Postgres и Redis. В очевидной простоте (скачать исходники на виртуальную машину, собрать, настроить демона) есть и такие же очевидные недостатки:

WeatherForecast. Dev. Deploy. Selectel.

И так, у нас есть проект в стадии разработки, и я хочу проверить как он будет разворачиваться на виртуальном сервере с подключением к реальным базам данным. Заодно, ещё раз потренируемся.

WeatherForecast. Dev.

Для дальнейшего погружения в тонкости разворачивания проектов нам понадобится подопытный кролик - веб-проект с типичной архитектурой, но с простой бизнес логикой и легко читаемым кодом. Мне пришел в голову сервис, который "предсказывает" случайную погоду.

Виртуальная машина. Удооолить.

Наигравшись с тестовой виртуальной машиной, хороша идея - выключить и удалить её, чтобы денюшки не капали.