NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

滴滴前端高频react面试题汇总

xiaofeng

前端 React

2023年优质的数据库审计厂商当属行云管家!

行云管家

等保 等级保护 数据库审计

阿里云IoT企业物联网平台 可用地域区 和 接入点信息速查——实践类

阿里云AIoT

阿里云 物联网 IoT

线上研讨会报名 | Perforce、中手游、星思半导体专家邀您一起畅聊如何通过数字资产管理与版本控制赋能大规模研发

龙智—DevSecOps解决方案

版本控制 数字资产 游戏开发 数字资产管理 芯片研发

前端一面常见react面试题(持续更新中)

夏天的味道123

前端 React

腾讯前端必会react面试题合集

xiaofeng

前端 React

瓴羊Quick BI拥有可视化大屏功能,精准掌握所有数据内容!

小偏执o

基于 IoT+TSDB+Quick BI 云产品架构的楼宇环境监控实战——实践类

阿里云AIoT

数据库 监控 物联网 传感器 测试技术

AIGC的隐私安全问题及隐私保护技术 | 社区征文

京东科技开发者

隐私计算 语言模型 ChatGPT 企业号 2 月 PK 榜 LLM

彻底搞懂React-hook链表构建原理

夏天的味道123

前端 React

2022年中国小微企业云财税服务市场专题分析

易观分析

数字化 财政 财税

前京东高级副总裁周伯文提前1年布局ChatGPT,现招募多名合伙人

B Impact

cmp云管平台专业厂商选择技巧看这里!

行云管家

云计算 云服务 云管平台 云计算管理工具

代码质量与安全 | ChatGPT能帮到你什么还有待探索,但人工智能真的可以帮你做自动化测试

龙智—DevSecOps解决方案

人工智能 AI 软件测试 测试 自动化测试

CI/CD | 深入研究Jenkins后,我挖掘出了找到了摆脱低效率低下的方法

龙智—DevSecOps解决方案

ci 持续集成 jenkins

Atlassian Server用户新选择 | 数据中心产品是否适合您的企业(2)?

龙智—DevSecOps解决方案

Atlassian 数据中心版 server版

2022年最新数据库调查报告:中国使用率最高的数据库云厂商是谁?

墨天轮

数据库 腾讯云 阿里云 华为云 上云

用javascript分类刷leetcode9.位运算(图文视频讲解)

js2030code

JavaScript LeetCode

2023前端一面vue面试题合集

yyds2026

Vue 前端

【华秋电子】晶体的选择有哪些参数?

华秋电子

几个你必须知道的React错误实践

xiaofeng

前端 React

华为云携手金蝶,探索高成长型企业“数字化创新管理”之路

华为云开发者联盟

云计算 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

你要的react+ts最佳实践指南

xiaofeng

前端 React

从实现一个React到深度理解React框架核心原理

夏天的味道123

前端 React

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

前端leetcde算法面试套路之回溯

js2030code

JavaScript LeetCode

校招前端高频react面试题合集

夏天的味道123

前端 React

还在苦于提升代码质量?快来试试这个方法

博文视点Broadview

Vue虚拟dom是如何被创建的

yyds2026

Vue 前端

谈JVM xmx, xms等内存相关参数合理性设置

京东科技开发者

JVM 内存 垃圾回收 吞吐量 企业号 2 月 PK 榜

文章转载 | 紫龙上海CTO王琦:我们对游戏工业化的探索

龙智—DevSecOps解决方案

游戏开发 游戏引擎 紫龙游戏

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