上一篇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。

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

  1. Docker4Dev#7 使用 Windows Container运行ASP.NET MVC 2 + SQLExpress 应用

    上一篇Windows Container文章中给大家介绍了如何使用Windows Container运行一个传统的.net 4.5 web应用程序,当时我们使用了默认的Visual Studio模版创 ...

  2. ipad2“新瓶装老酒” 苹果创新乏力?

    不是iPad Plus,也不是什么iPad Advance,苹果新一代平板电脑叫"iPad 2",3月3日,iPad 2如约而至,发布会上苹果公司的灵魂角色乔布斯公布了新品的命名, ...

  3. 同洲电子转型之殇:新瓶装老酒的定位迷航

    同洲电子在"互联网+"转型中不断试错以致迷失,回看这一段坎坷的转型过程,同洲打算以"新瓶装老酒"的方法,走出一条新大道,这一想法,从一开始就错了. 广电系统的骄 ...

  4. Docker4Dev #6 使用 Windows Container 运行.net应用

    关于d4d系列:之前这个系列叫做docker4dotnet,因为当时主要是为了能够探索在docker上运行.net应用:现在我觉得应该叫做docker4developer,因为我希望能够帮助更多的开发 ...

  5. 在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序

    引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序,看起来非常不错,不是吗?那么,如果我们希望真正在实际的生产环境去部署和运行这个应用程序,应该怎 ...

  6. 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API

    返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API 原文:返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 ...

  7. OpenShift 4.6 新特性 - 用 Windows MachineConfig Operator 管理 Windows Container

    <OpenShift 4.x HOL教程汇总> 文章目录 查看Windows节点的Kubernete版本 安装访问Windows节点的SSH Jumphost 登录到Windows节点 在 ...

  8. Service Mesh 是新瓶装旧酒吗?

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 李云(花名: ...

  9. 6点叫醒全员的腾讯是枕戈待旦,还是如李彦宏说的“新瓶装旧酒”

    2010中国(深圳)IT领袖峰会的主题是"后危机时代:IT引领中国经济发展新模式",当年BAT三巨头聚首论"云计算"实录: 李彦宏说:"......所 ...

最新文章

  1. 【POCO】POCO学习总结(二)——配置选择
  2. python使用正则表达式统计字符串中出现次数最多的数字
  3. 《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式
  4. 为什么不能够用unsigned 修饰 float和double
  5. DFT - Introduction to Test Models
  6. DBMS_SPACE包的使用
  7. python mysqldb 查询不到最新记录_python – MySQLdb是否缓存SELECT结果?
  8. 再把鼻子涂黑的飞鸽沟通最简单
  9. 为系统扩展而采取的一些措施——异步
  10. C++多线程编程(3) 异步操作类 std::future std::promise std::async
  11. 如何在.Netcore控制台应用中使用依赖注入(4)
  12. 人工智能能为旅游业带来多大的想象空间?
  13. 小凡虚拟机桥接到pc步骤实施
  14. 傅里叶变换 ~ 什么是傅里叶变换?
  15. sql 分组 行列转换
  16. 教你用迅雷下载百度网盘的文件
  17. 学专业计算机的配置,大学学计算机专业的学生电脑普遍配置是什么呢?
  18. linux vim命令详解 编辑文件 保存 退出
  19. Mac下解决硬盘无法读取问题Mounty for NTFS - 免费让 Mac 原生支持移动硬盘/U盘 NTFS 读写的必备驱动应用
  20. java中BOM是什么_Java-BOM与DOM对象

热门文章

  1. Centos-6.7下_Oracle 11gR2静默详细安装过程及排错
  2. 分布式服务框架 dubbo/dubbox 入门示例(转)
  3. [Swust OJ 404]--最小代价树(动态规划)
  4. ZOJ 1423 (Your)((Term)((Project))) (模拟+数据结构)
  5. C语言中auto,register,static,const,volatile的区别
  6. 拉丁法谚讲习1-24 【ZZ】
  7. [学习笔记]矩形面积并
  8. Git查看、删除、重命名远程分支和tag
  9. css揭秘之linear-gradient
  10. 软件工程个人最终总结