代码之家  ›  专栏  ›  技术社区  ›  Richard B

新手:为SQL Server 2017创建dockerfile

  •  0
  • Richard B  · 技术社区  · 5 年前

    对于我的开发环境,我希望以容器停靠器的身份运行SQL Server 2017/19。我在谷歌上搜索了一下,在微软网站上找到了以下内容:

    “要用Docker运行容器映像,您可以从bash shell(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
    

    0 回复  |  直到 5 年前
        1
  •  2
  •   FlorianB    5 年前

    作为前言:您不需要dockerfile或docker compose来为您的开发环境运行sql server实例。如果你只是想快速启动你最新的2017年集装箱只要进入你已经找到的comand。

    但是,如果您希望轻松地存储命令,而不必每次都键入它,为什么不向文件夹中添加一个简单的bat脚本。

    你的docker映像(例如安装其他库)然后你需要一个dockerfile。也请参考docker文档(伟大的文档)了解如何做到这一点。 或者如果你想 多个docker实例(为了便于它们之间的通信),那么docker编写文件就是一种方法。

    创建包含两个文件的文件夹

    folder
     |__> DockerFile
     |__> docker-compose.yml
    

    只指向现有的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
    

    那你的码头工人-合成.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

    不管怎样,我建议映射mdf和ldf文件,以便于访问,例如,即使关闭docker映像(如果这是您想要的行为),也可以存储状态。

        2
  •  0
  •   Mihai    5 年前

    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"