1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 使用SQL Server Docker容器在.NET Core中进行本地Web API开发

使用SQL Server Docker容器在.NET Core中进行本地Web API开发

时间:2019-10-17 20:34:54

相关推荐

使用SQL Server  Docker容器在.NET Core中进行本地Web API开发

目录

介绍

先决条件

最好事先知道

假设

动机

跨平台

快速安装

经济有效

不同版本/多个实例

速度

持久性

找到SQL Server 镜像并在本地下载它

在没有卷挂载的情况下在本地执行SQ​​L Server 容器

使用SQL Server Management Studio连接到在容器内运行的SQL Server

连接到在Web API中的容器内运行的SQL Server 创建的数据库

验证,删除和重新创建SQL Server 容器以确保我们创建的数据库(webapidemodb)已丢弃

使用卷挂载重新创建SQL Server 容器以存储容器外部的数据库和日志文件

下载源代码存储库

介绍

本文将讨论以下内容:

如何找到SQL Server 镜像并在本地下载在本地执行SQ​​L Server docker容器使用Docker容器内托管的SQL Server 进行本地.NET Core Web API开发

先决条件

Windows 10Visual Studio Microsoft SQL Server Management Studio 18Docker for Windows(Linux容器)客户端:Docker Engine——社区 版本:18.09.2API版本:1.39服务器:Docker Engine——社区 版本:18.09.2API版本:1.39(最低版本1.12)

最好事先知道

Docker(/)EF Core 2.1使用.NET Core 2.1的Web APISQL Server Management Studio 18

假设

本文假设您具有使用.NET Core 2.1的Docker,SQL Server Management Studio,VS ,EF Core 2.1和Web API的基本知识。

动机

跨平台

Microsoft SQL Server 现在可在多个平台上使用:Windows,Linux和Docker。

快速安装

获取SQL Server的docker镜像就像运行docker image pull一样简单。

经济有效

容器要便宜得多。

不同版本/多个实例

我们可以根据需要在内部部署服务器/笔记本电脑上启动尽可能多的实例。每个容器都是独立的(清新干净),当我们完成后将它们关闭。

速度

Docker和容器化应用程序的速度和效率优势也可用于SQL Server Docker容器。

持久性

我们可以使用卷挂载在容器外部存储.mdf和.ldf文件。这样,那些.mdf和.ldf文件将存储在持久性硬盘上。即使移除容器,该数据也将是安全的,因为它在容器外部托管。

找到SQL Server 镜像并在本地下载它

我们可以访问这里找到我们想要拉到我们本地笔记本电脑的镜像。在本文中,我们将使用“/mssql/server:-latest”。

首先,让我们通过使用命令行执行下面提到的命令来验证我们笔记本电脑上的可用镜像列表。

docker images

在命令提示符下,请执行下面提到的命令以在本地提取SQL Server 镜像。我们需要等待几分钟才能将镜像拉到本地。

docker pull /mssql/server:-latest

让我们验证SQL Server 镜像是否已在本地成功提取。我们可以看到镜像被拉出,其大小为1.33 GB。

在没有卷挂载的情况下在本地执行SQ​​L Server 容器

我们将执行没有卷挂载的SQL Server 容器。这样做的效果是,每当删除容器时,SQL Server数据库中存储的所有数据都将丢失。在命令行中执行下面提到的命令。确保端口1433可用。

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433 --name sqlserverwithoutmount -d /mssql/server:-latest

-e ACCEPT_EULA

将ACCEPT_EULA变量设置为“Y”以确认接受最终用户许可协议。

-e SA_PASSWORD

使用sa用户名登录SQL实例的密码。

-p 1433:1433

使用容器中的TCP端口(第二个值)映射主机环境(第一个值)上的TCP端口。在此示例中,SQL Server正在侦听容器中的TCP 1433,并且它将暴露给主机上的端口1433。

- name

指定容器的名称,而不是随机生成的名称。

此外,执行docker ps -a以验证容器是否已成功创建并运行。

docker ps -a

使用SQL Server Management Studio连接到在容器内运行的SQL Server

我们可以看到,SQL Server正在端口1433上执行。请指定服务器名称“localhost,1433”,登录“sa”和密码“Sample123$”以登录到容器内运行的SQL Server。

成功登录后,右键单击“数据库” ->“新建数据库...”。它将显示一个对话框,您需要指定“webapidemodb”。另外,请注意数据库和日志文件是在容器内的“/var/opt/mssql/data”中创建的。请参考下图:

打开一个新的查询窗口(右键单击“webapidemodb” - >新建查询)。从SqlScripts文件夹中,仅执行1Create_Professors.sql,2Create_Students.sql和3Insert_Professors.sql文件。它应该创建两个表并填充Professors表。

一旦我们成功执行了3个脚本文件,我们就可以执行select * fromProfessors和Students表。请查看下图:

让我们验证容器内是否存在数据库和日志文件。请执行“docker exec -it sqlserverwithoutmount bash”命令。它应该带我们进入容器。我们可以执行ls(列出)目录列表。我们知道,文件的路径是“/var/opt/mssql/data”,让我们导航并验证我们的webapidemodb.mdf和webapidemodb_log.ldf是否存在。

docker exec -it sqlserverwithoutmount bashcd /var/opt/mssql/datals

连接到在Web API中的容器内运行的SQL Server 创建的数据库

让我们在Web API解决方案中使用我们在Docker容器中创建的数据库。请在Visual Studio 中打开College.Services.sln解决方案。请打开appsettings.json并修改“CollegeDBConnectionString”里面的“ConnectionStrings”。“CollegeDBConnectionString”:“Server=tcp:localhost,1433;Database=webapidemodb;User Id=sa;Password=Sample123$;”。

请参考下图:

完成后,请执行Web API项目,我们应该能够在浏览器中看到3位教授的信息(在我们的例子中,它是Chrome)。

验证,删除和重新创建SQL Server 容器以确保我们创建的数据库(webapidemodb)已丢弃

验证SQL Server容器是否存在(docker ps -a)。然后,使用docker stop ContainerId和docker rm ContainerId停止并删除容器。此外,验证SQL Server容器不可用(docker ps -a)。请参考下图:

docker ps -adocker stop ContainerIddocker rm ContainerIddocker ps -a

执行命令以创建没有卷挂载的SQL Server 容器,并验证我们的webapidemodb文件是否丢失。

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433 --name sqlserverwithoutmount -d /mssql/server:-latest

请参考下图:

让我们验证数据库和容器内的日志文件是否丢失。请执行“docker exec -it sqlserverwithoutmount bash”命令。它应该带我们进入容器。我们可以执行ls来查看目录列表。我们知道,文件的路径是“/var/opt/mssql/data”,让我们导航并验证我们的webapidemodb.mdf和webapidemodb_log.ldf是否丢失。

docker exec -it sqlserverwithoutmount bashcd /var/opt/mssql/datals

使用卷挂载重新创建SQL Server 容器以存储容器外部的数据库和日志文件

通过上面的实验,我们知道如果我们创建没有卷挂载的SQL Server容器并且在容器内部有数据库和日志文件,那么如果我们删除容器,它们将会丢失。现在让我们删除并重新创建带卷挂载的容器。

验证SQL Server容器是否存在(docker ps -a)。然后,使用“docker stop ContainerId 和docker rm ContainerId”停止并删除容器。此外,验证SQL Server容器不可用(docker ps -a)。

docker ps -adocker stop ContainerIddocker rm ContainerIddocker ps -a

让我们执行下面提到的命令来创建带卷挂载的SQL Server 容器。“C:\DockerVolumes\formssql”是我们本地笔记本电脑的路径,而”/var/opt/mssql/data”是容器内的文件夹。这将在容器内部创建数据库和日志文件(C:\DockerVolumes\formssql)。请参考下图:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433 --name sql1 -v C:\LordKrishna\DockerVolumes\formssql:/var/opt/mssql/data -d /mssql/server:-latest

让我们创建“webapidemodb”数据库并执行SqlScripts文件夹中的所有4个脚本。执行Web API,我们应该在浏览器中看到Professor(s)和Student(s)信息。假设我们创建了相同的数据库名称,就像我们在第一次练习中所做的那样。

原文地址:/Articles/516/Using-SQL-Server--Docker-Container-for-Local-W

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。