
Я должен тебе сказать. Многие неверующие по разработке программного обеспечения, такие как я, были воодушевлены, когда в 2017 году мы услышали новость о том, что Microsoft SQL Server (MSSQL) начнет поддерживать Linux.
Такие люди, как я, считают, что любая технология, будь то программное обеспечение или оборудование, не должна ограничиваться платформой или операционной системой, которую они используют. Не существует более совершенной платформы, языка программирования или операционной системы, и все мы просто хотим достичь одного: работающего проекта. Так что переход Microsoft к Linux и миру открытого исходного кода действительно нас воодушевил.
Прошли годы, а Microsoft не отступила от своих обещаний. Эмуляторы Linux появились в Windows 10, Visual Studio Code можно установить и использовать как в Linux, так и в Mac, и в прошлом году они стали партнерами Docker для предоставления экземпляров контейнеров Azure (ACI). Но лучшее, что произошло, на мой взгляд, - это выпуск официальных образов MSSQL Docker, которые могут работать как в Windows 10, так и в Linux.
Буквально на этой неделе я подумал о серьезных изменениях в одном из моих личных проектов. Один из обслуживаемых мною серверов работает под управлением Windows и обеспечивает доступ по FTP и MSSQL к другим компьютерам в сети. Это старый сервер, на котором Windows работает дольше, чем раньше, возможно, это не лучшая идея, поскольку со временем Windows раздувается. Поэтому я подумал: а что, если я снова настрою его и предоставлю ту же услугу, но на этот раз он будет запускать Debian? Так как я ленив, я могу легко установить там OpenMediaVault 5 и через него управлять сервером. Затем установите Docker и Portainer для настройки MSSQL. Звучит просто, правда? Ну… не совсем так.
Я столкнулся с определенными "лежачими полицейскими", такими как проблемы с разрешением. С ними нетрудно иметь дело. Но он наверняка съедает время, чтобы начать работу, когда вы не знаете, что делаете (как я). Поэтому я подумал, может быть, я смогу написать о том, как я заставил его работать, чтобы вы могли сэкономить время и заставить MSSQL работать в кратчайшие сроки.
Итак, начнем с входа в Portainer. Откройте экземпляр докера и перейдите в представление контейнера.

В некоторых статьях в Интернете предлагается просто использовать шаблон MSSQL Portainer, указать необходимые значения и прекратить работу. Хотя это прекрасное решение для большинства людей, на момент написания этого шаблона все еще указывается на образ MSSQL 2017 Docker. Если вы хотите использовать MSSQL 2019, как я, вам нужно будет сделать это вручную. Итак, в представлении «Контейнер» нажмите «Добавить контейнер».

Вам необходимо предоставить следующее:
1. Название контейнера.
2. В изображении необходимо указать имя изображения и соответствующий тег. В моем случае это mcr.microsoft.com/mssql/server:2019-latest.
3. Если вы хотите использовать другой номер порта для вашего контейнера MSSQL Docker, вы можете указать его в конфигурации сетевых портов. Обратите внимание, что значение контейнера относится к номеру порта, используемому в контейнере, в данном случае 1433, номер порта MSSQL по умолчанию.

4. На вкладке Команды и ведение журнала необходимо указать пользователя как root.

Возможно, вы задаетесь вопросом, почему пользователю нужно назначить root-права. Если вы не используете root, вот что произойдет.

И при попытке авторизации происходит следующее:

Почему это происходит? Это происходит потому, что файлы, необходимые для работы MSSQL (например, основная база данных), нельзя скопировать в папку / var / opt / mssql. Это означает, что даже если ваш контейнер был успешно развернут и технически работает, вы не сможете войти в MSSQL, поскольку он не имеет важных компонентов. Контейнер должен настраивать все при запуске, и ему требуются привилегии root для завершения настройки. Итак, root.
5. На вкладке Тома вы должны сопоставить хотя бы папку с данными. В моем случае я сопоставил 3 каталога: папку данных, папку журнала и папку секретов.

6. Оставил сеть как есть. По умолчанию для него установлен режим моста, так что пусть будет так, если вы не знаете, что делаете.
7. На вкладке Env необходимо установить как минимум 3 переменные среды: ACCEPT_EULA, MSSQL_SA_PASSWORD и MSSQL_PID strong. >.
ACCEPT_EULA должен быть установлен на Y.
MSSQL_SA_PASSWORD - это пароль вашей учетной записи SA.
MSSQL_PID - это идентификатор продукта, который вы хотите использовать. Это может быть Evaluation, Developer, Express, Web, Standard, Enterprise или ключ продукта.
Дополнительные сведения о переменных среды, которые можно использовать, см. В записи MSDN Настройка параметров SQL Server с помощью переменных среды в Linux.

8. На вкладке Политика перезапуска установите для политики перезапуска значение Всегда.
9. Не касайтесь вкладок Время выполнения и Ресурсы и Возможности, если вы не знаете, что делаете.
После всех этих шагов вы можете развернуть контейнер MSSQL. Чтобы проверить это, вы открываете Management Studio, указываете адрес своего сервера и необходимые учетные данные.
Но что вы собираетесь делать, когда столкнетесь с этим?

Это происходит потому, что используемый сертификат не от доверенного центра сертификации. это нормально и не должно иметь большого значения при разработке. Чтобы это сработало, вы можете просто настроить свойства подключения на доверие сертификату.

Обратите внимание, что это не очень хорошая практика в производственной среде, и вам лучше убедиться, что у вас есть сертификат от доверенного центра сертификации при работе с производственными системами.
Вот и все. Вы сможете заставить свой экземпляр MSSQL Docker работать, если вы следовали всем инструкциям в этом руководстве. Удачного кодирования!
Спасибо, за то что прочитали эту статью.
Если вы найдете эту статью интересной, нажмите кнопку 👏 и поделитесь ею.
Мои статьи публикуются на Medium и на моем веб-сайте www.thebeet21.com