Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 新手:为SQL Server 2017创建dockerfile_Sql Server_Docker_Docker Compose_Dockerfile - Fatal编程技术网

Sql server 新手:为SQL Server 2017创建dockerfile

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很陌生,虽然我已经习惯了语法,但简单的事情我还是做不到

对于我的开发环境,我希望以容器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.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']}]"