【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Docker4Dev #7 新瓶装老酒 – 使用 Windows Container 运行 ASP.NET MVC 2 + SQLExpress 应用

  • 2017-08-21
  • 本文字数:1434 字

    阅读完需:约 5 分钟

上一篇 Windows Container 文章中给大家介绍了如何使用 Windows Container 运行一个传统的.net 4.5 web 应用程序,当时我们使用了默认的 Visual Studio 模版创建了一个简单的项目,而且没有链接数据库。我相信使用.net 进行应用开发的程序员们一定在想,如果我有一个很老的项目,比如使用的是 asp.net mvc 3 和 sql server,那是否可以使用 Windows Container 进行部署呢?所以这次我找来了一个 2010 年的老项目,使用的是 asp.net mvc 2 和 sql server 运行,这个项目已经有 7 年之老,应该比较有代表性了。

首先我将这个项目导入到 Visual Studio 2017 中,并顺利完成了解决方案的升级,中间没有报任何的错误,现在,我需要启动一个 SQL Server 的容器来导入这个项目所使用的数据库,运行一下命令启动 Sql Express 容器。

docker run -d -p 1433:1433 -e sa_password=P2ssw0rd -e ACCEPT_EULA=Y -v c:\temp:c:\temp --name sql harbor-bj.devopshub.cn/microsoft/mssql-server-windows-express

注意这里我使用了 vol 映射将本机的 c:\temp 目录映射到容器内的 c:\temp 目录,这样我就可以将数据库文件放入这个目录,并在容器内挂接到 sql server 上面。

同样,我们使用 docker inspect 命令获取这个容器的 ip 地址:

docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" sql

首先我们打开 SQL Server Management Studio,链接到这个容器上,这里输入以上命令获取的 ip 地址和在 docker run 命令中所指定的 sa 密码:

将数据库 mdf 文件复制到本地的 c:\temp 目录中,然后进行数据库挂接,注意下图中 SQL Management Studio 所访问的是容器内的目录,因为做了 vol 映射,我们可以访问在本机的 c:\temp 目录中的 mdf 文件。

现在对我们的 asp.net mvc 2 项目中的 web.config 文件进行修改,将 ConnectionString 指向运行在容器中的 SQL Server 上面。

然后在项目中添加 Dockerfile.windows 文件:

FROM harbor-bj.devopshub.cn/microsoft/iis
SHELL ["powershell"]

RUN Install-WindowsFeature Net-Framework-45-ASPNET ; \
 Install-WindowsFeature Web-Asp-Net45

ARG source=.
WORKDIR 'c:\app'

RUN Remove-Website -Name 'Default Web Site'
RUN New-Website -Name 'aspnet45docker' -Port 80 \
 -PhysicalPath 'c:\app' -ApplicationPool '.NET v4.5'

EXPOSE 80
COPY $source .

现在我们就可以发布站点并用 docker 打包了,进入到发布完成的目录,运行命令:

docker build -f Dockerfile.windows -t tailspintoys:win-v1 .

打包完成,运行并获取容器 ip 地址:

docker run -itd -p 81:80 --name tp tailspintoys:win-v1
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" tp

这个项目的源码我已经放在了 GitHub 上,大家如果想尝试可以从以下地址获取:

https://github.com/lean-soft/TailspinToys-docker

作者简介:

徐磊:一名写了十几年代码但还没写够的程序员,微软最有价值专家(MVP)之一。1999 年,毕业于北京理工大学工业管理专业和计算机专业;2001 年,硕士毕业于 UNSW 信息工程专业。从事过网管、技术支持、网络、软件开发等工作。2004 年加入了 SSW( www.ssw.com.au );2005 年组建 SSW 中国研发中心任 Country Manager;2012 年成立独资公司 SSW LIMITED BEIJING 任 GM;2014 年创立 Lean-Soft,专注于软件工程领域的创新实践。个人博客站点: http://devopshub.cn ,微信订阅号  devopshub。

2017-08-21 08:041375

评论

发布
暂无评论
发现更多内容

Wallys/QCN9074 WiFi Card/ IPQ6010/IPQ6018/ 802.11ax

wallys-wifi6

ipq6018

JavaScript类型转换

源字节1号

520,用Python定制你的《本草纲目女孩》

华为云开发者联盟

Python 华为云 modelarts 本草纲目女孩 MoXing

许北林:我为什么加入OpenHarmony生态?又为什么要做“启航KP”开发套件?

OpenHarmony开发者

OpenHarmony 开发者故事

LinkedList 源码分析-删除

zarmnosaj

5月月更

一文带你详细了解HarmonyOS折叠屏设计规范!

HarmonyOS开发者

HarmonyOS 折叠屏

What? 从小程序反向生成App?!

FinClip

Seata 企业版正式开放公测

阿里巴巴云原生

阿里云 开源 云原生 seata

使用 jMeter 对需要 User Authentication 的 Restful API 进行并发负载测试

Jerry Wang

Java Jmeter 性能测试 SAP 5月月更

在云平台 ABAP 编程环境上编写第一段 ABAP 程序

Jerry Wang

云计算 云原生 SAP abap 5月月更

活动预告 | 博云容器云产品族发布会,来了!

BoCloud博云

容器云 活动预告

Wallys/2.5Gbps Ethernet Port Support OpenWRT Support:QUECTEL /RM500Q-GL&Support:

wallys-wifi6

wifi6 openwrt

喜大普奔 | FinClip Hackathon 2022 结果宣布, Top3 项目出炉!

FinClip

这知识点真细,Python获取HTTP响应头和响应体

梦想橡皮擦

5月月更

飞书、钉钉和企微的三巨头之争下,其他厂商在移动平台赛道如何奋起直追?

WorkPlus

JVM进阶(十七)——类加载阶段解析:准备-解析-初始化

No Silver Bullet

JVM 类加载 解析 5月月更

FinClip 前端之 VUE 核心原理总结

FinClip

【直播回顾】OpenHarmony知识赋能第五期第五课——多媒体子系统之视频解读

OpenHarmony开发者

OpenHarmony 多媒体

Google Guava中EventBus使用不当会导致什么故障?

BUG侦探

kafka Guava EventBus

SUSE Rancher v2.6.5 社区版核心功能解读

Rancher

Kubernetes k8s rancher NeuVector

thinkphp 中 fetch 方法怎么用

CRMEB

FinClip SaaS 版上线啦

FinClip

年薪80W,在大厂呆了10年的我,被裁得心服口服

博文视点Broadview

比渗透测试更有用,红队演练该如何开展?

青藤云安全

青云云原生沙龙线上集结,找到属于你的云原生实践之路!

青云技术社区

预约直播|阿里云CDP 产品发布会

阿里云大数据AI技术

CDP 产品发布

代码重构,真的只有复杂化一条路吗?

华为云开发者联盟

代码 代码重构 过度设计 代码设计

520,解锁开发者的专属浪漫

葡萄城技术团队

情人节 520

最优的纯文本模型?GPT-4蓄势待发

OneFlow

人工智能 模型 预测 openai

部署在Azure上的SAS Viya可为客户带来204%的投资回报率

E科讯

盲盒APP开发的六大功能模式基础设置

WDL22119

盲盒商城 盲盒 盲盒开发 盲盒小程序开发 小程序开发

Docker4Dev #7 新瓶装老酒 – 使用 Windows Container运行ASP.NET MVC 2 + SQLExpress 应用_微软_徐磊_InfoQ精选文章