Docker容器运行ASP.NET Core
最近要学习的知识太多,都不知道先学哪些了,原本计划这篇博客是写xamarin.forms中的listview用法,关于listview的用法简书上有一篇介绍的也比较详细,所以暂时先缓一缓,属于次要任务,等以后再写。本周在万能的淘宝找了写关于区块链的教程,同时了解了下.net core。最近一两年对C#技术跟进不多,侧重点是Java,之前出.net core1.0的时候觉得.net core还不完善,所以就没学,没想到.net core这么快已经要到3.0了。毕竟自己是C#出身,一精多转,不能忘本,所以计划在未来一段时间把.net core也了解一下,大致看了一下,与.net的部分也是有很多交集,可能最大的特点就是跨平台部分。本篇先介绍下使用docker运行asp.net core应用。
一、新建asp.net core应用
这里新建了一个myWebApp的asp.net core的应用。

二、添加docker支持
添加docker支持有两种方式,一是在新建项目时设置启用docker支持,二是在已创建的项目上右键->添加->docker支持。


同时需要选择是window平台还是linux平台,如果是window系统就需要设置window平台,同时docker也需要设置为window containers。如下图报image operating system "windows" cannot be used on this platform错误,就是由于选择的平台不对。



三、创建docker镜像
添加docker支持后会自动生成dockerfile文件,这里有一个坑,在COPY ["myWebApp/myWebApp.csproj", "myWebApp/"]行中需要注意是myWebApp/myWebApp.csproj,是myWebApp目录下的myWebApp.csproj工程文件,所以需要把创建好的dockerfile拷贝到工程文件目录下。
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-sac2016 AS base
WORKDIR /app
EXPOSE 80 FROM microsoft/dotnet:2.2-sdk-nanoserver-sac2016 AS build
WORKDIR /src
COPY ["myWebApp/myWebApp.csproj", "myWebApp/"]
RUN dotnet restore "myWebApp/myWebApp.csproj"
COPY . .
WORKDIR "/src/myWebApp"
RUN dotnet build "myWebApp.csproj" -c Release -o /app FROM build AS publish
RUN dotnet publish "myWebApp.csproj" -c Release -o /app FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "myWebApp.dll"]

在项目目录下使用docker命令build生成docker镜像,docker build -t aspnetdemo .,(aspnetdemo后面有个.,表示dockerfile路径)。这里build了一个aspnetdemo的镜像,由于首次运行dockerfile,一些.net core基础镜像需要下载,而且家里网速也比较慢,下载的过程等了好久。


四、启动容器
在第三步镜像已经创建完成,使用docker images可以看到已创建好的镜像,然后就是使用docker run启动容器运行.net core应用。

在浏览器中山输入http://localhost:8080/,可以看到如下页面。

微软官方文档写使用 Windows 容器时,必须直接在浏览器中转到容器 IP 地址,这里使用了-p映射了端口,所以直接输入http://localhost:8080/是可以访问的。

下面使用ipconfig查找容器映射的docker的ip,然后在浏览器输入docker的ip也是可以访问。


五、小结
本篇只是简单介绍了docker部署asp.net core应用,.后续net core可能会连数据库、redis等容器,那样就涉及到容器互联,容器编排技术以及devops持续集成,往后扩展又可以扩展好多,这些以后慢慢学。
Docker容器运行ASP.NET Core的更多相关文章
- docker中运行ASP.NET Core Web API
在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序
小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
- 在Docker中运行asp.net core 跨平台应用程序
概述 Docker已经热了有一两年了,而且我相信这不是一个昙花一现的技术,而是一个将深远影响我们日后开发和部署.运营应用系统的一种创新(很多人将其作为devops的一种非常重要的基石).学习docke ...
- 【原创】 Docker 中 运行 ASP.NET Core 站点
一. 建立 .NetCore 项目 a.新建项目 b.选择项目类型 c.添加控制器 d.添加视图 e.修改默认请求 f.发布 二. 准备 CentOS 环境 a.准备虚拟机 b.安装 docker ...
- 在Linux和Windows的Docker容器中运行ASP.NET Core
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...
- Docker容器中运行ASP.NET Core
在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...
- 利用docker容器运行.net core webapi
利用docker容器运行.net core webapi :first-child { margin-top: 0 !important; } > :last-child { margin-bo ...
随机推荐
- dedecms 后台 菜单点击后打开的慢
原因之一: 加载后台信息的时候 耗费的时间太长. 如果不关注这边的数据, 可以将他们删除掉. 删除 “信息统计” : 找到 www.yoursite.com/dede/js/indexbo ...
- 对于bilibili主页head部分的代码的总结以及疑问。
1.lang=zh-Hans: lang代表languages的意思,VSCode创建出来的网页模板是lang=en,en代表english的意思,zh代表中文,单一的zh是废弃的语法,Hans代表中 ...
- elasticsearch目录
快速入门篇(基于版本5.4) Elasticsearch入门 Elasticsearch和Kibana安装 Elasticsearch索引和文档操作 Elasticsearch文档查询 安装和配置(基 ...
- 对象池----unity中应用
对象池应用在unity中能减少资源消耗,节省内存空间具体原理不再赘述. 以下是他的操作步骤:(注意:对象池中应用到了栈或对队列!) 1).先建立一个(怪物)物体 mMonster; 2).再建立一 ...
- VIM批量缩进
方法一 1.按 ctrl + shif + ; 进入底行模式 2.将所要批量缩进的行号写上,按照格式:“行号1,行号2>”输入命令,如要将4至11行批量缩进一个tab值,则命令为“4,11&g ...
- 原生JS实现下拉刷新
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- 动态规划----最长递增子序列问题(LIS)
题目: 输出最长递增子序列的长度,如输入 4 2 3 1 5 6,输出 4 (因为 2 3 5 6组成了最长递增子序列). 暴力破解法:这种方法很简单,两层for循环搞定,时间复杂度是O(N2). 动 ...
- Redis基础入门,Redis的优点也特点,Redis五种数据类型
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. 1.Redis的主要特点 Redis有三个主要特点,使它优越于其它键值数据存储系统 - Redis将 ...
- SUSE12Sp3-MongoDB安装
1.解压 sudo mkdir /usr/local/mongodb # 创建mongodb目录 将mongodb-linux-x86_64-suse12-4.0.6.tgz复制到/usr/local ...
- [Swift]LeetCode135. 分发糖果 | Candy
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...