Sql server 新手:为SQL Server 2017创建dockerfile
我对docker很陌生,虽然我已经习惯了语法,但简单的事情我还是做不到 对于我的开发环境,我希望以容器docker的身份运行SQL Server 2017/19。我在谷歌搜索了一下,在微软网站上找到了以下内容: “要使用Docker运行容器映像,可以从bash shell(Linux/macOS)或提升的PowerShell命令提示符下使用以下命令。”Sql server 新手:为SQL Server 2017创建dockerfile,sql-server,docker,docker-compose,dockerfile,Sql Server,Docker,Docker Compose,Dockerfile,我对docker很陌生,虽然我已经习惯了语法,但简单的事情我还是做不到 对于我的开发环境,我希望以容器docker的身份运行SQL Server 2017/19。我在谷歌搜索了一下,在微软网站上找到了以下内容: “要使用Docker运行容器映像,可以从bash shell(Linux/macOS)或提升的PowerShell命令提示符下使用以下命令。” docker run-e“接受”\u EULA=Y“-e”SA\u密码=”` -P1433:1433——名称sql1` -d mcr.micro
docker run-e“接受”\u EULA=Y“-e”SA\u密码=”`
-P1433:1433——名称sql1`
-d mcr.microsoft.com/mssql/server:2017最新版本
如果我想将其封装在一个简单的docker文件或docker compose文件中,我该怎么做?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"
版本:“3.3”
服务:
msql:
图片:mcr.microsoft.com/mssql/server:2017最新版本
环境:{
接受“Y”,
萨乌密码:“
}
端口:
- "1433:1433"
容器名称:“sql1”
作为前言:您不需要dockerfile或docker compose来为您的开发环境运行sql server实例。如果您只想快速启动最新的2017年集装箱,只需输入您已经找到的Com即可
但是,如果您希望轻松地存储命令,而不必每次都键入它,为什么不向文件夹中添加一个简单的bat脚本呢
但是,如果您想扩展您的docker映像(例如安装其他库),则需要dockerfile。请参考docker文档(很棒的文档)了解如何做到这一点。
或者,如果您想编写多个docker实例(以便它们能够轻松地相互通信),则可以编写docker编写文件
但为了真正回答你的问题:
创建包含2个文件的文件夹
folder
|__> DockerFile
|__> docker-compose.yml
DockerFile的内容将是:
(请注意,这里的示例实际上除了指向现有的microsoft映像之外,什么都不做,,但是如果您在没有docker compose的情况下使用它,您还可以在这里定义文件映射、密码配置等,并从这个新的预配置映像启动一个新容器)
那么您的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']}]"
在文件夹内的cml或PowerShell中调用docker compose up
,将启动此新的SQL Server容器
无论如何,我建议映射mdf和ldf文件,以便于访问,例如,即使关闭docker映像,也可以存储状态(如果这是您想要的行为)。感谢Florian的帮助。我要试一试
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
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']}]"