Как настроить работу .NET приложения, SQL Server, Flyway-миграций с помощью Docker, Docker Compose
Разработчик Noveo Егор дает пошаговую инструкцию, как избежать проблем запуска приложения .NET, SQL Server на разных средах.
5К открытий6К показов
Егор
Разработчик Noveo
Зачастую разработчикам необходимо устанавливать и настраивать разные приложения, технологии, сервисы для локальной разработки проектов. Когда проект один и вы работаете, например, с одной версией .NET, или если все разработчики работают на Windows, то какие-либо проблемы с настройкой проекта вряд ли появятся.
Но что, если вам периодически нужно переключаться между разными версиями Java, PHP, Node.js, да еще и у одного разработчика установлен Linux, а у другого Windows? Конечно, можно писать инструкции по установке и настройке, но это не решает проблему изолированности вашей операционной системы от среды приложения.
После удаления уже установленной версии .NET, SQL Server могут остаться какие-либо файлы конфигурации, которые могут привести к ошибке запуска другой установленной версии приложения.
Для решения подобных проблем запуска приложения .NET, SQL Server на разных средах можно использовать Docker, Docker Compose.
1. Установка Docker, Docker Compose
Для установки Docker нам нужно на странице Install Docker Engine открыть руководство по необходимой ОС.
Для установки Docker Compose — на странице Install Docker Сompose также открыть руководство по необходимой ОС.
Проверяем, что Docker и Docker Compose работает, выполняя команды в консоли:
2. Создание структуры директорий проекта
Для своих проектов, где используется Docker, я придерживаюсь следующей структуры:
- src — исходный код проекта
- docker:
- api — директория с файлами конфигурации, файлом docker для сборки образа .NET приложения,
- db — директория с файлами конфигурации, файлом docker для сборки образа SQL Server, миграциями,
docker-compose.yml — файл с настройками запуска контейнеров.
3. Формирование Docker-файлов для .NET, SQL Server
3.1. Настройка образа .NET Docker
Для работы .NET-приложения создадим файл Dockerfile в директории проекта с путем docker/api/Dockerfile:
3.2. Настройка образа SQL Server Docker
Для работы SQL Server создадим файл Dockerfile в директории проекта с путем docker/db/Dockerfile, содержимое которого:
3.3. создадим файл конфигурации /docker/db/migrations/flyway.conf с содержимым:
3.3.1. создадим файл миграции в директории /docker/db/migrations/V1__DatabaseCreation.sql с содержимым:
Подробнее о работе с миграциями с помощью Flyway можно почитать тут:
— https://flywaydb.org/documentation/,
— https://flywaydb.org/documentation/
4.Создание файла docker-compose.yml
Итак, нам осталось создать только файл docker-compose.yml, чтобы описать в нем все сервисы:
- db — сервис для работы MS SQL Server,
- db-migration — сервис для работы с Flyway-миграциями,
- api — сервис для работы с .NET-приложением.
Создадим файл docker-compose.yml в директории проекта с путем docker/docker-copmose.yml и содержимым:
5. Запуск приложения
Для запуска нам нужно запустить Docker-контейнеры при помощи команды docker-compose. Из директории проекта выполняем в терминале команду:
после чего наше приложение должно открыться в браузере по url: http://localhost:5000
К SQL Server мы можем подключиться с помощью команды:
указав пароль Your_password123
Полезные ссылки
5К открытий6К показов