在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

评论

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

这2个AI格式转换工具,轻松将PDF文件转为PPT!

彭宏豪95

人工智能 效率工具 格式转换 AIGC AI生成PPT

Subex在《2024年Gartner®CSP客户和业务运营人工智能魔力象限™报告》中获得认可

财见

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS HPE (慧与) 定制版

sysin

macos esxi OEM BIOS hpe

服务端性能测试:行业流行性能压测工具介绍

测吧(北京)科技有限公司

测试

融云 CEO 董晗获颁 EqualOcean「2024 出海全球化服务 30 人」

融云 RongCloud

融云上线 HarmonyOS NEXT 版 SDK,全面适配「纯血鸿蒙」生态

融云 RongCloud

京东JD商品sku信息API返回值探索:商品规格数据与跨境电商机遇

技术冰糖葫芦

API Explorer API 编排 API 安全 API 文档

idm支持断点续传吗 idm断点续传如何使用

阿拉灯神丁

网络加速 下载器 大文件断点续传 idm下载 网页视频下载工具

淘宝商品详情数据(实时更新,缓存数据)

tbapi

淘宝商品详情数据接口 淘宝API 淘宝商品数据采集

鸿蒙,我们土地上开出的花

脑极体

AI

豆瓣评分9.5!清华大牛熬夜整理的Python深度学习教程开发下载!

我再BUG界嘎嘎乱杀

Python 人工智能 深度学习

谈小娱自助台球受邀参加萤石云开发者大会

极客天地

Mac虚拟机装Windows Mac环境安装Win虚拟机 mac安装windows虚拟机教程免费 mac虚拟机parallels desktop

阿拉灯神丁

#Mac 虚拟机软件 pd 19 虚拟机安装

和小红书一起参会! 了解大模型与大数据融合的技术趋势

小红书技术REDtech

数据 会议 大模型

观测云赋能「阿里云飞天企业版」,打造全方位监控观测解决方案

观测云

监控

搜索型数据库的技术发展历程与趋势前瞻

极限实验室

趋势 搜索型数据库

《中国数据库系列纪录片》轻舟已过万重山

不惑

数据库 历史 国产数据库

百度的面试!你觉得这个难度怎么样?

王中阳Go

面试 面经‘ Go 面试题 面经 后端 大厂

企业供应链数字化的挑战与应对:转型之路的技术破解

不在线第一只蜗牛

低代码 数字化 供应链

助力游戏实现应用内运营闭环,融云游戏社交方案升级!

融云 RongCloud

idm不能续传是什么意思 idm无法继续下载文件 IDM的断点续传功能 IDM是什么软件

阿拉灯神丁

断点续传 网络加速 下载器 IDM idm下载

GitHub高赞!Python零基础也能搞定的数据分析与处理

我再BUG界嘎嘎乱杀

Python 数据分析 Excel 数据处理 开发语言

从零开始带你上手体验Sermant自定义插件开发

华为云开发者联盟

微服务 云原生 华为云 华为云开发者联盟 企业号2024年7月PK榜

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