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

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


相关文章:

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



推荐一个培训

基于Docker的DevOps实战培训】是由徐磊老师主讲的三天封闭式课程,地点北京,时间2017年03月24-26日。课程结合了徐磊老师多年来在DevOps上的实践经验和Docker技术,具有很强的实战意义。详细内容及报名方式点击“阅读原文”。



内容转载自公众号

DevOps
DevOps
了解更多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis+MySQL动态分页查询数据经典案例

最近在用Mybatis做项目的时候遇到了不少问题,今天我就在这和大家分享一下,稀稀拉拉的研究了两天,终于搞好了!开发人员:1111开发软件:Myeclipse用到的框架技术:Mybatis数据库:MySql主…

希尔排序+移位法(吊打交换法)

package com.atguigu.sort;import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class ShellSort {public static void main(String[] args) { // int[] arr {8, 9, 1, 7, 2, 3, …

那些年的骗子

中午一觉睡醒之后,忽然发现多年不联系的初中同学给我发了个消息,觉得事情没那么简单:正好我的公众号需要大量的用户,我就顺水推舟了!一看到QQ的安全提示,我就感觉事情确实不妙!初步推断对方是个…

干货 | 彻底弄懂 HTTP 缓存机制及原理

转载自 干货 | 彻底弄懂 HTTP 缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多…

实习知识整理7:SpringBoot和html+thymeleaf模板的项目的相关配置文件

1. application.yml server: port: 8082servlet:context-path: /project #设置访问地址 http://localhost:8082/project 才可以访问到 static 下 index.htmlspring:datasource: # 数据库driver-class-name: com.mysql.cj.jdbc.Driver # 这是8的配置,5的话不用…

Visual Basic的未来之路

上周,微软宣布了他们改变Visual Basic语言未来发展计划的想法。这次公布给Visual Basic开发人员留下了很多不确定性,但Visual Basic语言的设计者Anthony D.Green说明了这个新策略的一些细节。 Green首先列出了当时使用VB进行开发的四个基础指导原则&…

快速排序+思路分析

图解 代码实现 package com.atguigu.sort;import com.sun.org.apache.xpath.internal.WhitespaceStrippingElementMatcher;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class QuickSort {public static void main(String[] args) {//[-9,78,…

jquery sleep函数

function sleep(n) { //n表示的毫秒数 var start new Date().getTime(); while (true) if (new Date().getTime() - start > n) break; } console.log(new Date()); this.sleep(3000); console.log(new Date());

2017 年编程语言排行榜:Python 排第一

站长之家(ChinaZ.com) 7 月 24 日消息,近日根据 IEEE Spectrum 发布的研究报告显示,在 2016 年排名第三的 Python 在今年已经成为世界上最受欢迎的语言,C 和 Java 分别位居第二和第三位。IEEE Spectrum 的排行依据数据记者 Nick Diakopoulos …

Spring 获取 request 的几种方法及其线程安全性分析

转载自 Spring 获取 request 的几种方法及其线程安全性分析 本文将介绍在Spring MVC开发的Web系统中,获取request对象的几种方法,并讨论其线程安全性。 一、概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象&…

2的负x次幂图像_数学| NO.2,3 函数 T15

点击蓝字,关注我们函数题目2020.11.30#2,3函数 T15函数发展:函数就是在某变化过程中有两个变量X和Y,变量Y随着变量X一起变化,而且依赖于X。如果变量X取某个特定的值,Y依确定的关系取相应的值,那么称Y是X的函…

AspNet Identity 和 Owin 谁是谁

英文原文:http://tech.trailmax.info/2014/08/aspnet-identity-and-owin-who-is-who/ 最近我发现Stackoverflow上有一个非常好的问题.提问者问:为什么在调用AuthenticationManager.SignIn后,claim仍然可以被添加到Identity并持久化到cookie里. 示例代码如下所示: ClaimsIdenti…

jquery中获取下拉框的文本值

获取下拉框的属性值:$(this).val(); 获取下拉框的文本值:$(this).find(option:selected).text();

快速排序+时间测试(yyds)

package com.atguigu.sort;import com.sun.org.apache.xpath.internal.WhitespaceStrippingElementMatcher;import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class QuickSort {public…

ssh根据姓名查询的时候报错java.lang.IndexOutOfBoundsException: Remember that

错误如下:java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:79)at org.hibernate.engine.query.ParameterMetadata.ge…

bs架构 erp 进销存_从应用架构看生鲜电商信息化建设

编辑导读:对于生鲜电商来说,信息化建设是很重要的一环,所有的业务开展都离不开信息化的支持。本文作者讲从应用架构角度出发,对生鲜电商信息化建设展开分析,希望对你有帮助。一、背景语言共识之前介绍了从业务架构看生…

java中int转成String位数不足前面补零 java格式化2位数不足补零

最近我又搜了关于String.format的东西,其实有自带的补零方法, String.format("%06d",12);//其中0表示补零而不是补空格,6表示至少6位

分布式 | Dubbo 架构设计详解

转载自 分布式 | Dubbo 架构设计详解 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一…

完成OSS.Http底层HttpClient重构封装 支持标准库

OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕,OSS开源系列两个最底层的类库已经具备跨运行时支持的能力。由于OSS.Http类库是几年前我参照RestSharp的思路,完成的一个轻量型Http请求框架。由于时间较久底层使用的还是HttpWebRequest&#xff…

归并排序+思路分析

思路分析 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class MergeSort {public static void main(String[] args) {int arr[]{8,4,5,7,1,3,6,2};int temp[]new int[arr.length];mergeSort(arr,0,arr.len…