写点什么

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

评论

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

反向海淘代购中二次付款难题的深度解析与解决之道

代码忍者

苹果电脑压缩软件哪个好用?Mac解压缩软件BetterZip免费版安装激活教程,附注册码

阿拉灯神丁

压缩工具 mac解压缩软件 BetterZip BetterZip 5下载 BetterZip 5破解版

字节开源轻量级 TTS 模型 MegaTTS3,中英切换自如;面壁首个纯端侧智能助手「上车」,支持多模态交互丨日报

声网

开源最强!DeepClaude使用方案,内含DeepsSeek无门槛部署方法

ModelWhale

#人工智能 #大数据 #大语言模型 DeepSeek

突破公网瓶颈的专线选择:IPLC专线

Ogcloud

企业组网 IPLC 国际专线 国际网络专线 国际IPLC专线

开发提测流程优化思考:如何在质量控制与效率间寻找平衡?

TechLead Studio

HarmonyOS NEXT 中级开发笔记:电竞直播应用的数据库设计与实践

bianchengyishu

HarmonyOS NEXT

中国气象局干部培训学院特邀和鲸共探大模型赋能气象服务现代化

ModelWhale

人工智能 大数据 气象 #大模型

数据分析与AI丨基于AI的电子元件焊接质量优化

Altair RapidMiner

机器学习 AI 数据分析 制造业 RapidMiner

卧槽!C 语言宏定义原来可以玩出这些花样?高手必看!

不在线第一只蜗牛

C#

通义灵码 Rules 来了:个性化代码生成,对抗模型幻觉

阿里巴巴云原生

阿里云 云原生

为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?

SelectDB

搜索引擎 全文检索 elasticsearch 日志分析 Doris

「高盛」最新人形机器人研报:主流人形机器人公司梳理和商业化瓶颈(附报告)

机器人头条

机器人 科技 大模型 人形机器人 具身智能

一站式解决Deepseek微调三大痛点:数据集、GPU资源、微调手册与源码

九章云极DataCanvas

人工智能 DeepSeek deepseek微调

BeeWorks:企业级即时通讯和协同办公软件

BeeWorks

即时通讯 IM 企业即时通讯平台 私有化部署 局域网视频软件

内网即时聊天软件推荐,哪款更适合企业的即时通讯需求?

BeeWorks

IM 企业即时通讯平台 即时通讯IM 私有化部署 局域网视频软件

《Operating System Concepts》阅读笔记:p512-p527

codists

操作系统

天下拍-艺术品拍卖经典案例分享

至存网络

埋点 拍卖 用户画像 艺术品拍卖 资产拍卖

跨国企业组网方案: IPLC专线的优势和应用场景

Ogcloud

组网 企业组网 IPLC 国际网络专线 跨国企业组网

看过智谱现场演示,我觉得AI要开始卷“动手能力”了

Alter

AI

昇腾+DeepSeeK | 博云联合昇腾打造满血版一体机

BoCloud博云

博云 DeepSeek AI一体机

时序数据库 IoTDB 荣获第八届中关村国际前沿科技大赛工业互联网领域赛 Top3

Apache IoTDB

C 语言宏定义原来可以玩出这些花样?高手必看!

伤感汤姆布利柏

EviMed:左手综述内容,右手参考文献!三步产出可溯源的万字医学综述!

科技汇

API 安全之认证鉴权

阿里巴巴云原生

阿里云 云原生 API

Flink批处理自适应执行计划优化

Apache Flink

大数据 flink 实时计算 批处理

通义灵码 Rules 来了:个性化代码生成,对抗模型幻觉

阿里云云效

阿里云 云原生

电竞革命!电选对平台狂省90%硬件费:ToDesk云电脑、网易云游戏等终极评测

小喵子

云电脑 ToDesk云电脑 云电竞

Databend 产品月报(2025年3月)

Databend

C 语言内存布局深度剖析:从栈到堆,你真的了解吗?

不在线第一只蜗牛

C#

C 语言内存布局深度剖析:从栈到堆,你真的了解吗?

伤感汤姆布利柏

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