使用SQL Server 2017 Docker容器在.NET Core中进行本地Web API开发
目录
介绍
先决条件
最好事先知道
假设
动机
跨平台
快速安装
经济有效
不同版本/多个实例
速度
持久性
找到SQL Server 2017镜像并在本地下载它
在没有卷挂载的情况下在本地执行SQL Server 2017容器
使用SQL Server Management Studio连接到在容器内运行的SQL Server 2017
连接到在Web API中的容器内运行的SQL Server 2017创建的数据库
验证,删除和重新创建SQL Server 2017容器以确保我们创建的数据库(webapidemodb)已丢弃
使用卷挂载重新创建SQL Server 2017容器以存储容器外部的数据库和日志文件
- 下载源代码存储库
介绍
本文将讨论以下内容:
- 如何找到SQL Server 2017镜像并在本地下载
- 在本地执行SQL Server 2017 docker容器
- 使用Docker容器内托管的SQL Server 2017进行本地.NET Core Web API开发
先决条件
- Windows 10
- Visual Studio 2017
- Microsoft SQL Server Management Studio 18
- Docker for Windows(Linux容器)
- 客户端:Docker Engine——社区
- 版本:18.09.2
- API版本:1.39
- 服务器:Docker Engine——社区
- 版本:18.09.2
- API版本:1.39(最低版本1.12)
最好事先知道
- Docker(https://www.docker.com/)
- EF Core 2.1
- 使用.NET Core 2.1的Web API
- SQL Server Management Studio 18
假设
本文假设您具有使用.NET Core 2.1的Docker,SQL Server Management Studio,VS 2017,EF Core 2.1和Web API的基本知识。
动机
跨平台
Microsoft SQL Server 2017现在可在多个平台上使用:Windows,Linux和Docker。
快速安装
获取SQL Server的docker镜像就像运行docker image pull一样简单。
经济有效
容器要便宜得多。
不同版本/多个实例
我们可以根据需要在内部部署服务器/笔记本电脑上启动尽可能多的实例。每个容器都是独立的(清新干净),当我们完成后将它们关闭。
速度
Docker和容器化应用程序的速度和效率优势也可用于SQL Server 2017 Docker容器。
持久性
我们可以使用卷挂载在容器外部存储.mdf和.ldf文件。这样,那些.mdf和.ldf 文件将存储在持久性硬盘上。即使移除容器,该数据也将是安全的,因为它在容器外部托管。
找到SQL Server 2017镜像并在本地下载它
我们可以访问这里找到我们想要拉到我们本地笔记本电脑的镜像。在本文中,我们将使用“mcr.microsoft.com/mssql/server:2017-latest”。
首先,让我们通过使用命令行执行下面提到的命令来验证我们笔记本电脑上的可用镜像列表。
docker images
在命令提示符下,请执行下面提到的命令以在本地提取SQL Server 2017镜像。我们需要等待几分钟才能将镜像拉到本地。
docker pull mcr.microsoft.com/mssql/server:2017-latest
让我们验证SQL Server 2017镜像是否已在本地成功提取。我们可以看到镜像被拉出,其大小为1.33 GB。
在没有卷挂载的情况下在本地执行SQL Server 2017容器
我们将执行没有卷挂载的SQL Server 2017容器。这样做的效果是,每当删除容器时,SQL Server数据库中存储的所有数据都将丢失。在命令行中执行下面提到的命令。确保端口1433可用。
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433
--name sqlserver2017withoutmount -d mcr.microsoft.com/mssql/server:2017-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 2017
我们可以看到,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 * from Professors和Students表。请查看下图:
让我们验证容器内是否存在数据库和日志文件。请执行“docker exec -it sqlserver2017withoutmount bash”命令。它应该带我们进入容器。我们可以执行ls(列出)目录列表。我们知道,文件的路径是“/var/opt/mssql/data”,让我们导航并验证我们的webapidemodb.mdf和webapidemodb_log.ldf是否存在。
docker exec -it sqlserver2017withoutmount bash
cd /var/opt/mssql/data
ls
连接到在Web API中的容器内运行的SQL Server 2017创建的数据库
让我们在Web API解决方案中使用我们在Docker容器中创建的数据库。请在Visual Studio 2017中打开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 2017容器以确保我们创建的数据库(webapidemodb)已丢弃
验证SQL Server容器是否存在(docker ps -a)。然后,使用docker stop ContainerId和docker rm ContainerId停止并删除容器。此外,验证SQL Server容器不可用(docker ps -a)。请参考下图:
docker ps -a
docker stop ContainerId
docker rm ContainerId
docker ps -a
执行命令以创建没有卷挂载的SQL Server 2017容器,并验证我们的webapidemodb文件是否丢失。
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433 --name sqlserver2017withoutmount -d mcr.microsoft.com/mssql/server:2017-latest
请参考下图:
让我们验证数据库和容器内的日志文件是否丢失。请执行“docker exec -it sqlserver2017withoutmount bash”命令。它应该带我们进入容器。我们可以执行ls来查看目录列表。我们知道,文件的路径是“/var/opt/mssql/data”,让我们导航并验证我们的webapidemodb.mdf和webapidemodb_log.ldf是否丢失。
docker exec -it sqlserver2017withoutmount bash
cd /var/opt/mssql/data
ls
使用卷挂载重新创建SQL Server 2017容器以存储容器外部的数据库和日志文件
通过上面的实验,我们知道如果我们创建没有卷挂载的SQL Server容器并且在容器内部有数据库和日志文件,那么如果我们删除容器,它们将会丢失。现在让我们删除并重新创建带卷挂载的容器。
验证SQL Server容器是否存在(docker ps -a)。然后,使用“docker stop ContainerId 和docker rm ContainerId” 停止并删除容器。此外,验证SQL Server容器不可用(docker ps -a)。
docker ps -a
docker stop ContainerId
docker rm ContainerId
docker ps -a
让我们执行下面提到的命令来创建带卷挂载的SQL Server 2017容器。“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 mcr.microsoft.com/mssql/server:2017-latest
让我们创建“webapidemodb”数据库并执行SqlScripts文件夹中的所有4个脚本。执行Web API,我们应该在浏览器中看到Professor(s)和Student(s)信息。假设我们创建了相同的数据库名称,就像我们在第一次练习中所做的那样。
原文地址:https://www.codeproject.com/Articles/5162011/Using-SQL-Server-2017-Docker-Container-for-Local-W
使用SQL Server 2017 Docker容器在.NET Core中进行本地Web API开发相关推荐
- Docker 部署SQL Server 2017
Docker 部署SQL Server 2017 一.部署步骤 1.下载镜像 2.创建容器并运行 二.参考文档 一.部署步骤 1.下载镜像 代码如下(示例): sudo docker pull mcr ...
- 【北京】微软技术直通车(第二期) 之 SQL Server 2017饕餮
微软技术直通车 本系列活动密切关注微软及周边相关技术.以微软云计算和相关产品为依托,涉及云计算.数据处理.开发工具.商用软件.物联网.人工智能等前沿科技. 系列活动邀请微软技术专家.一线开发者.成功创 ...
- win10 SQL SERVER 2017安装详解
目录 SQL Server 2017安装 SSMS安装 写在之前 安装的sql程序包是cn_sql_server_2017_developer_x64_dvd_11296175 在安装之前最好是安装了 ...
- 初探SQL Server 2017 on Docker@macOS
编者语:假期到了最后一天,或者你人在旅途,或者你睡了8天,而我在家修炼了几天,完成了一堆好玩的,慢慢和大家分享下. 9月27日SQL Server 2017 正式发布,看点一堆,而这次发布不仅有传统的 ...
- SQL Server 2017 正式发布
SQL Server 2017 跨出了重要的一步,它力求通过将 SQL Server 的强大功能引入 Linux.基于 Linux 的 Docker 容器和 Windows,使用户可以在 SQL Se ...
- SQL Server 2017 RC1 现已实现 Linux 功能扩展
经过七个预览版本的迭代之后,Microsoft 宣告发布第一个 SQL Server 2017 候选版本.开发人员可以藉由该版本来探索一些扩展 SQL Server Linux 版能力的新改进. 在这 ...
- cmd命令卸载sql server_Ubuntu下部署SQL Server 2017(安装及使用方法,卸载方法)
SQL Server 2017 的发布是 SQL Server 历史上首次同时发布 Windows 和 Linux 版本,本文将介绍如何在 Ubuntu 下部署 SQL Server 2017,包括它 ...
- SQL Server in Docker - 还原数据库
SQL Server in Docker 还原数据库 上一回演示了如果在Docker环境下安装SQL Server(使用Docker运行SQL Server),这次我们来演示下如何还原一个数据库备份文 ...
- RedHat宣布支持Azure、.Net Core 2.0和SQL Server 2017
近期,Microsoft和RedHat宣布支持在Red Hat OpenShift上运行Windows容器.此次宣布所针对的主要场景,是让Linux和Windows容器工作于同一集群中.这将使具有混杂 ...
最新文章
- SpringBoot培训教程--史前文明之Spring简介
- AbstractListView源码分析8
- 用chkconfig配置linux自启动服务,用chkconfig配置linux自启动服务
- 经典论文阅读记录-持续更新
- vmclone 问题
- WIN7下 VS2008 无法调试ASP.NET
- c++ 宏 stdin 和 STDIN_FILENO 区别
- C语言程序的开发过程
- 关于anaconda
- 蓝桥杯练习题之数列特征
- 微信公众平台:JustOracle(微信号:justoracle)现已开通,热忱欢迎你的加入
- 简单爬取小姐姐的照片
- python判断是否为变位词_[python]变位词的判别与分类
- RAID的概念和RAID对于SQL性能的影响
- 显卡算力表-arch-架构
- 《三体》-- 刘慈欣
- Johnson法则简要证明
- 高中计算机课代表优秀事迹,开学啦 | 课代表欧弟的优秀事迹
- 智能云网 解决方案白皮书
- 牛客寒假算法基础集训营2(C 处女座的砝码)(数论)(梅氏砝码问题)
热门文章
- mac r 导出csv文件_R在Max OS进行导入和导出xlsx文件
- java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...
- html输入框间隔,input间的间距和文字上下居中
- 做春节海报没有思路?传统节日年味十足,PSD分层模板,给你灵感!
- 最佳圆角字体,设计师的最爱
- 渐变色彩艺术海报背景素材|感官刺激、个性突出
- 设计资源类网站|日常必逛设计导航
- 如何保证mq的有序性_消息队列如何保证顺序性?
- Linux内核跟踪eBPF:bpftrace一行教程
- Linux网络协议栈:用eBPF写TCP拥塞控制算法