Зачем использовать Docker для MSSQL
Скажем, у вас есть бортовое и нужно получить новый разработчик до скорости. Вы прошли через процесс настройки для SQL Server в Windows? Это немного утомительно и даже с запущенными сценариями для установки (или в моем случае я завернулся с шоколадией), это все еще много вещей, которые вам нужно, в том числе, возможно, перезагрузка, если их отсутствует .NET .NET-зависимости.
Нормальное решение — использовать более локальный процесс для быстрого развертывания и выделения базы данных.
Это имеет свой собственный набор проблем, которые лично мне нравится избегать. Localdb более изолирован, но не по-настоящему нравится запустить местный SQL Server Standard Edition, а также разрешения для отладки, обмена и другие вещи могут со своим собственным набором шагов для работы. Я видел, что для многих разработчиков, чтобы просто избежать этих проблем и запустить локальную установку SQL Server, чтобы просто упростить и работать с SQL Server, как ожидается, он должен быть.
Я бы исследовал контейнеры Docker SQL Server в прошлом, но одна большая проблема для принятия для меня была проблемы, которые я устанавливала локальные папки Windows в контейнер на основе Linux. Почему это важно? ❓ Простота использования для разработчика. Если бы я предложил, чтобы сохранить усилия для многих разработчиков, работающих с SQL Server, я уверен, что я уверен, что им придется скопировать резервную копию или файл базы данных в Via CLI на виртуальный установленный привод, который не может легко управлять быть выключателем сделки. Я в основном хотел убедиться, что они отображают SQL Server в контейнере, резервные копии базы данных, файлы MDF и LDF, и любые другие созданные файлы смогут сохраняться вне этого экземпляра, обеспечивающего простое рабочее значение.
Я рад сказать, что я наконец-то устроил его на удовлетворение, разрешая большую часть этих проблем.
Сценарии это хорошо Для
Если вы пожелали сделать следующее, то использование Docker может в конечном итоге сэкономить вам некоторые усилия.
- Упростите настройку нового экземпляра SQL Server
- Уметь сбросить экземпляр вашего SQL Server, чтобы позволить тестировать некоторые настройки в изоляции
- Уметь переключать SQL Server Editions соответствовать новым требованиям
- быть в состоянии улучшить или патч до более поздней версии SQL Server с минимальными усилиями
Это не для производства. Есть больше усилий и дискуссий, которые продолжаются с использованием SQL Server в контейнерах, Kubernetes (еще более сложные!), А другие подходы контейнеров, которые находятся далеко за пределами объема тому, что я смотрю. Это сначала сосредоточено на обеспечении рабочего процесса разработки, которая снижает сложность для разработчика и повышает легкость, на которой тестирование SQL Server может быть реализовано, сделав экземпляр SQL Server легко утилизировать и воссоздать.
Если это также означает, что я распространяю немного 🐧 Linux Magic в некоторые разработчики стека Windows … затем посчитайте его как подлый выигрыш. 😏
SQL Server на контейнерах Linux или Windows
В следующем примере выполняется с SQL Server на Linux. Как мне уже комфортно с SQL Server в Windows, я хотел попробовать это на контейнере на основе Linux. Я также хотел продолжить использование контейнеров на основе Linux для оснастки инструментов, и не нужно переключаться в контейнеры Windows для единственной цели запущенного SQL Server. В то время я начал это тестирование, я нашел его исключительно. Вы либо работаете в Linux или контейнеры на базе Windows. Это меняется с появлением новых функций в Docker, которые могут разрешить боковые контейнеры на основе Windows + Linux.
Отзыв Примечания Укажите:
Экспериментальная функция: контейнеры LCOW теперь могут быть запущены рядом с контейнерами Windows (на Windows RS3 Build 16299 и позже). Используйте в режиме контейнера Windows для запуска контейнеров Linux в Windows. Обратите внимание, что LCOW является экспериментальным; Требуется экспериментальный вариант демона. Docker Community Edition 18.03.0-CE-Win59 2018-03-26
Основным отличием вашего локального процесса разработки будет аутентификация Windows VS SQL аутентификация. Используйте аутентификацию SQL с помощью SQL Server на основе Linux
Docker Compose пример
Ниже приведен результат большого испытания и ошибки в течение года. Благодаря Шон Мелтон 👏 Также для предоставления мне поддержки выполнения моего устранения неполадок как часть сообщества SQL Server в Slash. Вы можете найти пример Шона, который я использовал в качестве отправной точки для моего 🧪testing в этот цист.
Несколько полезных советов:
- Удалить
-d
Для отсоединения, и вы можете увидеть выходной консоль SQL Server в консоли. - Смотрите сохраняемые базы данных (System and User!) В каталоге артефактов после начинается бежать Docker-Compose.
Улучшение тестов кода
Еще одна причина, по которой я действительно взволнован, это способность лучше поддерживать тестирование через такие инструменты, как Pester. Да, это гиком, но я люблю твердый письменный тест, который поддерживает мой код и помогает мне обеспечить качество с изменениями. Лучше TDD — это цель моя наверняка.
🔨 Это поддерживает реализацию лучших испытаний, предоставляя потенциал для вращения локального экземпляра SQL, восстановление тестовой базы данных и выполнение последовательности действий против нее с помощью Pass или Fail без дополнительных требований инфраструктуры, чтобы это было сделано на другом сервере. Создание тестов, которые не являются полными тестированием интеграции, так как минимально зависит от внешних факторов, является фантастическим шагом, чтобы сохранить вам много работы.
Простой Pester (PowerShell) может отдать начало теста, как это:
Before All { docker-compose up -d Import-Module Dbatools # Wait Until dbatools confirms connectivity through something like test-dbaconnection, then proceed with tests # Test-DbaConnection .... # Restore-DbaDatabase ... } After All { docker-compose down --volume } Describe "DescribeName" { Context "ContextName" { It "ItName" { Assertion } } }
Заворачивать
Надеюсь, это поможет кому-то. Я провел по крайней мере год, возвращающийся со временем к тому, чтобы насилиться на самом деле, чтобы он работал таким образом, который чувствовал себя как первоклассный гражданин и снижение сложности для развития развития.
Я довольно доволен результатами. 😁
Оригинал: «https://dev.to/sheldonhull/running-sql-server-in-docker-17h9»