写点什么

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:041989

评论

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

AI 应用落地谈起 ,免费试用 Amazon Bedrock 的最佳时机

掘金安东尼

测吧爱测智能测试平台 | 用例生成、自动执行、智能遍历图谱构建

测试人

人工智能 软件测试

ROMA-iOS适配深色模式总结

京东科技开发者

博睿数据携手华为共筑智能未来,深度参与HUAWEI CONNECT 2025并发表主题演讲

博睿数据

某大型银行跨区域 Pulsar 集群网络问题分析报告

AscentStream

消息队列 pulsar

喜报 | 博睿数据Bonree ONE 荣登中国信通院"铸基计划"三大权威名录!

博睿数据

从“被动监控”到“主动优化”:MyEMS 重构能源管理价值的路径

开源能源管理系统

开源 开源能源管理系统

鸿蒙应用开发——AppStorageV2和PersistenceV2的使用

高心星

鸿蒙 HarmonyOS5.0 AppstorageV2 PersistenceV2

鸿蒙应用开发——Repeat组件的使用

高心星

缓存 鸿蒙 懒加载 HarmonyOS5.0 Repeat

ClkLog埋点与用户行为分析系统:架构升级与性能全面提升

ClkLog

开源 用户画像 优化架构 #数据分析 埋点分析

博通订阅制压顶,企业如何破局?云易捷超融合成高性价比出口

智驱前线

万字长文,手把手教你2小时实现鸿蒙版视频播放器(附源码),建议先收藏

程序员潘Sir

鸿蒙 HarmonyOS

多商家智慧新零售小程序管理系统:助力本地商家实现线上线下双增长

微擎应用市场

YOLOv7安全评估揭示11个漏洞:RCE攻击与模型差异风险

qife122

计算机视觉 机器学习安全

从Win到鸿蒙:ToDesk、Splashtop、TeamViewer、向日葵,跨平台远控谁更强?

小喵子

远程办公 向日葵 ToDesk TeamViewer 远控

技术解读 | OceanBase 数据库诊断与调优的关键技术与方法

老纪的技术唠嗑局

运维 调优 oceanbase 诊断

工业 / 商业 / 园区通用:MyEMS 的定制化能源优化方案与实践

开源能源管理系统

开源 能源管理系统

和鲸助力 2025 中国高校计算机大赛——大数据挑战赛全国总决赛圆满举行!

ModelWhale

清华大学 大数据挑战赛 大数据比赛 计算机比赛

快递帮小二微信小程序管理系统:高效解决寄取件需求,赋能校园与物流场景

微擎应用市场

Amazon Lambda + API Gateway 实战,无服务器架构入门

掘金安东尼

2025智源学者资助计划启动

智源研究院

人工智能 资助项目

智源发布具身智能能力基座,共筑全球具身新生态

智源研究院

人工智能

华为云:做厚算力“黑土地”,成就行业AI先锋

华为云开发者联盟

大模型 华为云开发者联盟 AI Agent 具身智能 AI云服务

MyEMS:解码工业文明的"能量语言",让能源管理从粗放走向精益

开源能源管理系统

开源 能源管理系统

本地(或自下载)浏览器插件 安装指南

京东科技开发者

大河抽奖盲盒运营版微信小程序管理系统 :助力商家实现 “玩法自由” 的盲盒营销利器

微擎应用市场

接龙大师微信小程序管理系统:一站式社群信息收集与活动管理解决方案

微擎应用市场

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