在Docker容器中运行.Net Core web Api项目
安装Docker环境
参考本人这篇《CentOS 7 下Docker的安装》文章进行安装以及环境配置,这里不做赘述。
通过.NetCore开发WebApi项目
1. 创建.Net Core Web项目,如下图所示:

这里我们选择Web API模板进行项目创建,为了简单起见,我们不做身份验证,也不选择 Host in cloud,点击ok项目及创建好

默认的项目文件结构如图所示:

在cmd 执行dotnet restore 恢复依赖包

运行项目,在浏览器就可以查看到结果

至此,一个简单的.Net Core开发的Web API项目就做好了
现在我们就把它放到Docker中运行。
Docker中运行
1. 首先我们先修改一下项目文件,主要是Program.cs和project.json

在Program.cs文件中加 .UseUrls("http://*:9001")是为了让来自所有IP的请求都可以访问这个API,当然也可以写成.UseUrls("http://0.0.0.0:9001") 作用一样,9001是公布出去的端口号。
另外一个修改的文件就是project.json,注释掉type那行以及scripts。添加
"runtimes": {
"debian.8-x64": { }
}
因为我这里代码目标运行的机器是debian系统的docker镜像,所以runtimes写成了debian.8-x64。你可以按照你实际情况配置


2. 发布程序到文件系统

发布成功后,会在项目目录下面生成发布好的文件

将发布成功的文件打个压缩包,上传到Linux机器上,并且解压到一个目录中, 进入到这个目录中
新建一个Dockerfile文件 <touch Dockerfile>, 这个文件的作用是构建一个Docker运行镜像。其中所需要填写的内容如下:
FROM microsoft/dotnet:latest RUN mkdir -p /usr/src/app/DockerTest COPY . /usr/src/app/DockerTest WORKDIR /usr/src/app/DockerTest EXPOSE CMD ["dotnet", "DockerTest.dll", "--server.urls", "http://*:9002"]
上面内容第1行代表在microsoft/dotnet:latest基础上面构建Docker镜像(这个微软dotnet镜像是以debian系统构建生成的)
第2行是表示新建一个DockerTest目录
第3行是将当前目录下面的所有文件都复制到刚才新建的DockerTest目录下面
第4行是将程序工作目录切换到DockerTest
第5行是将9002端口公布出去
第6行是执行dotnet DockerTest.dll 命令
Dockerfile文件编辑好后,执行docker build -t docker_test . 如下图所示生成docker_test镜像文件

通过docker images命令可以查看刚才新建的docker_test镜像

运行docker_test镜像创建出来的容器

通过浏览器访问此docker容器Host起来的service













在Docker容器中运行.Net Core web Api项目的更多相关文章
- Docker容器中运行ASP.NET Core
在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...
- .Net Core 3.0 的 docker 容器中运行 无法 访问 Oracle数据库
.Net Core 3.0 的 docker 容器中运行 无法 访问 Oracle数据库 , 一直报下面的错误 ORA-00604: error occurred at recursive SQL ...
- .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑
今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...
- 一个docker容器中运行多个服务还是弄一堆docker容器运行?
不建议直接在单个 Docker 容器中运行多个程序. 以 2017年 10 月18 日 Docker 官方支持 Kubernetes 为分水岭计算,Kubernetes 赢得容器编排之战的最终胜利已经 ...
- 在docker容器中运行hello world!
在docker容器中运行hello world! docker容器可以理解为在沙盒中运行的进程.这个沙盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等.但这个沙盒默认是不会 ...
- Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro
Docker容器中运行ES,Kibana,Cerebro和Logstash安装与数据导入ES 想加强ES有关的知识,看了阮一鸣老师讲的<Elasticsearch核心技术与实战>收获很大, ...
- docker_facenet_image在Docker容器中运行Facenet环境搭建
对开发和运维人员来说,可能最梦寐以求的就是一次性地创建或配置,可以在任意环境.任意时间让应用正常运行.而Docker恰恰是可以实现这一终极目标的瑞士军刀. 具体来说,Docker在开发和运维过程中,具 ...
- 详解Net Core Web Api项目与在NginX下发布
前言 本文将介绍Net Core的一些基础知识和如何NginX下发布Net Core的WebApi项目. 测试环境 操作系统:windows 10 开发工具:visual studio 2019 框架 ...
- 在Linux和Windows的Docker容器中运行ASP.NET Core
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...
随机推荐
- glmnetUtils: quality of life enhancements for elastic net regression with glmnet
The glmnetUtils package provides a collection of tools to streamline the process of fitting elastic ...
- #416 Div2 C
#416 Div2 C 题意 一些人去坐车,它们已经按给定顺序排队,每个人可能去不同的目的地,去同一目的地的人一定要被分成一组(去不同目的地的也可被分到同一组),对分好的每一组所有不同的目的地序号作异 ...
- 关于bootstrap中cropper的截图上传问题
之前做一个关于截图的东东,搞了好久终于弄好了,其主要关键是把前端截图的数据(x坐标,y坐标,宽度,高度和旋转角度)传到后台,然后在后台对图片做相关处理,记录一下方便以后查看. 后台配置为ssm. Ja ...
- 网页中使用CSS和JS阻止用户选择内容
CSS实现 body{ -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; ...
- nodejs零基础详细教程1:安装+基础概念
第一章 建议学习时间2小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- javacv开发详解之1:调用本机摄像头视频(建议使用javaCV1.3版本)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素
最近..... 废话不多说上效果图 用的是UGUI 我先说思路 通过判断元素的位置信息来改变Hierarchy的顺序 实现无限滚动 改变位置的同时也要不断的调整Content的位置防止乱跳 元素锁定就 ...
- MYSQL更改root password时遇到Access Denied的解决办法
今天在公司虚拟机上装MYSQL之后需要修改root password,然而遇到这样的错误: Access denied for user 'root'@'localhost' (using passw ...
- python 中 for 循环 if循环 break
python中最基本的语法格式大概就是缩进了.python中常用的循环:for循环,if循环.一个小游戏说明for,if ,break的用法. 猜数字游戏: 1.系统生成一个20以内的随机数 2.玩家 ...
- ecshop图片上传JPEG格式失败问题
在根目录下找到includes文件目录,在其目录中找到cls_image.php打开并找到: $allow_file_types = '|GIF|JPG|JEPG|PNG|BMP|SWF|'; 此处J ...