#sql-server #docker #docker-compose #dockerfile
#sql-сервер #docker #docker-создать #dockerfile
Вопрос:
Я новичок в docker, и, хотя я начинаю привыкать к синтаксису, простые вещи все еще ускользают от меня.
Для моей среды разработки я хотел бы запустить SQL Server 2017/19 как средство настройки контейнера. Я выполнил поиск в Google и нашел следующее на веб-сайте Microsoft:
«Чтобы запустить образ контейнера с помощью Docker, вы можете использовать следующую команду из командной строки bash (Linux / macOS) или командной строки PowerShell с повышенными правами».
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong!Passw0rd>" `
-p 1433:1433 --name sql1 `
-d mcr.microsoft.com/mssql/server:2017-latest
Если я хотел бы обернуть это в простой dockerfile или файл docker-compose, как мне это сделать?
Ответ №1:
в качестве предисловия: вам не нужен dockerfile или docker-compose для запуска экземпляра sql server для вашей среды разработки. Если вы просто хотите быстро запустить свой последний контейнер 2017, просто введите команду, которую вы уже нашли.
Однако, если вы хотите легко сохранить команду, не вводя ее каждый раз, почему бы не добавить простой скрипт bat в свою папку.
Однако, если вы хотите расширить свой образ docker (например, установить дополнительные библиотеки), вам понадобится dockerfile. Пожалуйста, также ознакомьтесь с документацией docker (отличная документация) о том, как это сделать. Или, если вы хотите создать несколько экземпляров docker (чтобы они могли легко взаимодействовать друг с другом), тогда файл docker-compose — это правильный путь.
Но для того, чтобы действительно ответить на ваш вопрос: создайте некоторую папку с 2 файлами
folder
|__> DockerFile
|__> docker-compose.yml
Содержимое вашего DockerFile будет тогда:
(имейте в виду, что этот пример здесь на самом деле ничего не делает, кроме указания на существующий образ Microsoft, но если вы используете его без docker-compose, вы также можете определить сопоставления файлов, конфигурацию пароля и т.д. здесь и просто запустите новый контейнер из этого нового предварительно настроенного образа)
FROM microsoft/mssql-server-windows-developer:2017
# environment configuration moved into docker-compose file
# EXPOSE 1433:1433
# ENV attach_dbs="[{'dbName':'YourDBName','dbFiles':['C:\temp\yourDB.mdf','C:\temp\yourDB_Log.ldf']}]"
# ENV ACCEPT_EULA=Y
# ENV sa_password=yourPassword
Тогда ваш docker-compose.yml может выглядеть следующим образом:
version: '3'
services:
yourServiceName:
container_name: yourContainerName
build: .
ports:
- "1433:1433"
volumes:
- .:C:/temp/
environment:
sa_password: "yourPassword"
ACCEPT_EULA: "Y"
attach_dbs: "[{'dbName':'YourDBName','dbFiles':['C:\\temp\\yourDB.mdf','C:\\temp\\yourDB_Log.ldf']}]"
вызов docker-compose up
на cml или PowerShell внутри папки запустит этот новый контейнер SQL-Server.
Несмотря на это, я бы рекомендовал сопоставить файлы mdf и ldf для удобства доступа и, например, для сохранения состояния, даже если вы выключите образ docker (если это ваше желаемое поведение).
Комментарии:
1. Спасибо за это Флориану. Я попробую
Ответ №2:
docker-compose.yml:
version: "3.3"
services:
msql:
image: mcr.microsoft.com/mssql/server:2017-latest
environment: {
ACCEPT_EULA: "Y",
SA_PASSWORD: "<YourStrong!Passw0rd>"
}
ports:
- "1433:1433"
container_name: "sql1"