写点什么

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

评论

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

STEPN游戏系统定制开发需

Geek_232be3

Digital Twins与物联网的挑战:如何可视化并加速开发

龙智—DevSecOps解决方案

物联网 digital twin 物联网发展

2022钉钉发布会|云钉低代码新模式、新能力、新机遇

一只大光圈

低代码 数字化 钉钉宜搭 宜搭

WebAssembly技术_在Web端运行C与C++程序(ubuntu18.04)

DS小龙哥

webassembly 3月月更

链上智能合约dapp系统开发,TRX波场链系统开发

Geek_232be3

DAPP系统开发 区块链资讯

如何通过 Jira Service Management 打造员工自助服务工具实现高效分布式工作

龙智—DevSecOps解决方案

Atlassian 薪酬估算器 jsm

与容器服务 ACK 发行版的深度对话最终弹:如何通过 open-local 玩转容器本地存储

阿里巴巴云原生

弹窗如何设计才能提高用户体验

源字节1号

网站开发

大画 Spark :: 网络(6)-Spark网络中的“四次握手”Executor注册到Driver的过程(硬核)

dclar

大数据 hadoop spark 源码 源代码

OpenHarmony 3.1 Beta版本关键特性解析——HAP包安装实现剖析

OpenHarmony开发者

OpenHarmony

Perforce Helix Core与SVN的较量,谁会赢?

龙智—DevSecOps解决方案

svn Subversion helixcore

面试突击33:线程池有哪些状态?状态是如何转换的?

王磊

java面试

如何写出好的产品帮助文档?

小炮

产品文档

Nacos+OpenFegin正确调用服务的姿势!

王磊

springcloudAlibaba

Kubernetes 中的对象是如何删除的:Finalizers 字段介绍

Se7en

企业知识管理包括哪些内容?

小炮

知识管理 企业

Hoo研究院|2022年第一季度发生在区块链行业的投融大事件

区块链前沿News

虎符交易所 虎符研究院

iuap 助力长久汽车打造“业财一体数字智能化平台”

用友BIP

用友 用友iuap

突破地心引力!与KubeEdge一起迈向太空的云原生

华为云原生团队

开源 边缘计算 卫星定位 边缘技术 边缘云

【图解数据结构】排序全面总结(上)

知心宝贝

数据结构 算法 排序算法 3月月更

第11期直播:解读集群镜像“开箱即用”神器——sealer!

OpenAnolis小助手

技术分享 龙蜥社区 sig 龙蜥大讲堂 集成镜像

Flutter事件响应源码分析

得物技术

flutter 源码 源码分析 UI 框架

Jira API的六种传参方式

FunTester

性能测试 FunTester

项目管理中的三约束四职责五过程九领域

踏雪痕

项目管理 3月程序媛福利 3月月更 PMBOK

重磅发布 丨 阿里云首部 “数智化转型系列丛书”重磅面世!

博文视点Broadview

NFT跨链挖矿软件定制,defi质押挖矿dapp平台搭建

Geek_232be3

系统开发、 TFS挖矿 系统开发 区块链资讯

搭建 VuePress 站点必做的 10 个优化

冴羽

JavaScript Vue 前端 vuepress 博客搭建

火狐浏览器如何设置代理?火狐浏览器代理服务器设置教程

喀拉峻

网络安全

在线Js,JavaScript压缩格式化工具

入门小站

工具

java培训Spring之AOP的案例分析

@零度

spring JAVA开发 aop

自己动手写Docker系列 -- 5.2实现查看运行中的容器

Docker

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