如何在开发人员的Docker容器内使用SQL Server正确的环境

时间:2018-07-19 05:42:44

标签: asp.net sql-server docker docker-compose

我将把.NET项目移动到容器中,并希望以正确的方式进行操作。 目前,开发环境很简单:

  • 每个开发人员都在自己的PC上部署了自己的SQL Server,并且所有DB都驻留在其中
  • 在开发过程中,ASP.NET项目在IIS Express中运行
  • 用于连接到DB的连接字符串如下所示:“数据源= .;初始目录= DB; Trusted_Connection = True”。使用“。”作为数据源有助于统一web.config并将其在每个开发人员的PC上运行

一切都很简单。

现在由于种种原因,我想搬进容器,而遇到的问题很少。我认为所有这些都是因为我对容器的某些原理有误解,因此我需要一些小小的帮助来避免浪费时间做错事。

与使用DB相关的主要问题

  1. 如何使用SQL Server和数据库列表创建容器以使其能够 以与我们现在使用它相同的方式来使用它。一世 意思是-已启动操作系统,已启动SQL Server服务,我可以 通过MS Management Studio连接到数据库。主要关注的是 所有数据库都安全。我已经了解了如何持久化安装卷 存储上可以创建备份。但是我可以用相同的方式处理数据库,以确保每次启动容器时所有数据库都在工作吗?
  2. 然后如何在项目解决方案中配置docker-compose文件 使用有效的DB连接到该容器,而不用重新启动 一?
  3. 如何在每个开发人员的PC上使连接字符串相同的方式上执行此操作?我的意思是-避免将IP地址用作数据源,并且仍然可以使用“”。或“本地主机”或对每个人都相同的东西?
  4. 如果我对容器的理解不正确,应该使用 部署在我的PC SQL服务器中-如何配置docker-compose文件 通过“ localhost”连接到主机中的SQL Server,避免 定义IP地址或使其在每台PC上都一样?

如何使其在生产中正常工作我知道,因为我们只有一个SQL Server,并且只有一个连接字符串,这不是问题。但是如何配置dev。环境-这是我的问题。 1周的指南阅读确实没有帮助。也许我错过了一些东西,有人可以指出正确的文章,这可以给我一些答案。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Docker Compose for Sql Server

docker-compose.yml

version: '2'
services:
    app-mssql:
        image: microsoft/mssql-server-linux:latest
        # volumes are not supported on macOS
        # uncomment bellow volume and replace volume with relative or absolute path of the host
        # volumes:
        #     - ~/volumes/jhipster/tempdb/mssql/:/var/opt/mssql/data/
        environment:
            - ACCEPT_EULA=Y
            - SA_PASSWORD=yourStrong(!)Password
        ports:
            - 1433:1433

要求:

RAM:2GB

环境变量

  ACCEPT_EULA=Y

  SA_PASSWORD=<your_strong_password>

  MSSQL_PID=<your_product_id | edition_name> (default: Developer)

ACCEPT_EULA 确认您接受最终用户许可协议。

SA_PASSWORD 是在容器运行后用于连接到SQL Server的数据库系统管理员(userid ='sa')密码。重要说明:此密码必须至少包含以下四个类别中至少三个的8个字符:大写字母,小写字母,数字和非字母数字符号。

MSSQL_PID 是将与容器一起运行的产品ID(PID)或版本。

  

可接受的值:

     

Developer :这将使用Developer Edition运行容器(如果未提供MSSQL_PID环境变量,则为默认值)

     

Express :这将使用Express Edition运行容器

     

标准:这将使用标准版运行容器

     

企业:这将使用企业版运行容器

     

EnterpriseCore :这将使用Enterprise Edition Core运行容器

     

有效产品ID :这将使用与PID关联的版本运行容器

注意:在这里,您可以在docker hub microsoft/mssql-server-linux

上找到已废弃的文档。