博客
关于我
.Net之Docker部署详细流程
阅读量:417 次
发布时间:2019-03-06

本文共 2613 字,大约阅读时间需要 8 分钟。

Docker部署 ASP.NET Core Web API 项目完整指南

作为一名开发人员,我决定从头开始学习 Docker 在部署 ASP.NET Core Web API 项目中的应用过程。本文将详细记录我的学习过程,并分享一些实用的部署经验。


创建项目

本次事例代码是用 Visual Studio 2019 创建的 ASP.NET Core Web API 项目。目标框架是 .NET 5,无需身份验证,不配置 HTTPS(根据个人需求勾选),启动 Docker(我习惯于后期添加),启用 OpenAPI 支持(添加 Swagger 文档)。


默认配置

创建完成后,我们查看项目目录为下:

.├── Controllers│   └── UserController.cs├── Program.cs├── Startup.cs└── launchSettings.json

直接 F5 启动项目,发现直接跳转一个 API 文档页面:

http://localhost:5000/swagger

修改配置

我基于个人习惯,修改 launchSettings.json 文件,删除 IIS 配置,删除后如下所示:

{  "iisSettings": {    "windowsAuthentication": false,    "anonymousAuthentication": true,    "iisExpress": {      "applicationUrl": "http://localhost:51539",      "sslPort": 0    }  },  "$schema": "http://json.schemastore.org/launchsettings.json",  "profiles": {    "Net5ByDocker": {      "commandName": "Project",      "launchBrowser": true,      "launchUrl": "swagger",      "environmentVariables": {        "ASPNETCORE_ENVIRONMENT": "Development"      },      "dotnetRunMessages": "true",      "applicationUrl": "http://localhost:5000"    }  }}

删除默认控制器,添加新的 UserController,在其中添加默认一些方法操作,如下:

[Route("api/[controller]/[action]")][ApiController]public class UserController : ControllerBase{    public static List
userInfo = new(); [HttpGet] public IEnumerable
Get() { return userInfo; } [HttpPost] public List
Post([FromBody] string value) { if (!string.IsNullOrWhiteSpace(value)) { userInfo.Add(value); return userInfo.ToList(); } } [HttpDelete("{id}")] public List
Delete(string id) { if (!string.IsNullOrWhiteSpace(id)) { userInfo.Remove(id); return userInfo.ToList(); } }}

添加 Dockerfile

选中项目右键添加 Docker 支持,本次部署在 Windows 平台。


运行命令

在文件资源管理器打开文件:

.\Net5ByDocker\Dockerfile

在上层目录下运行 CMD 输入命令:

docker build -f .\Net5ByDocker\Dockerfile -t net5sample .

注意:部分朋友在这一步会拉取官方镜像比较慢,可以配置 Docker 加速器使用。


生成镜像

通过 Docker 客户端查看我们已经生成的镜像:

docker images

生成容器

本文通过 Terminal 软件执行命令:

docker run --name net5sampleone -d -p 8060:80 net5sample

命令简述:

  • -d:后台运行
  • --name:容器名称
  • -p:端口映射

验证项目

通过浏览器访问地址:localhost:8060/swagger

懵逼!!!这个时候不是应该出来 Swagger 文档的界面吗?难道我们部署的方式有问题?

让我们访问下项目的接口:

localhost:8060/api/user

说明我们的项目运行是正常的,仔细查看 Swagger 配置后发现,因为为了安全默认不允许发布后出来 Swagger 文档。


通过 Postman 访问

添加用户

发送 POST 请求:

http://localhost:8060/api/user

请求体:

{    "value": "张三"}

查询用户

发送 GET 请求:

http://localhost:8060/api/user

删除用户

发送 DELETE 请求:

http://localhost:8060/api/user/123

参数:

id=123

微信公众号【鹏祥】

本文通过详细的步骤介绍了 Docker 部署 .NET 项目的完整流程,并分享了在实际操作中遇到的问题及解决方法。希望对你有所帮助!

转载地址:http://oupkz.baihongyu.com/

你可能感兴趣的文章
QT的C++程序加载动态链接库DLL(Linux下是so)的方式
查看>>
QT界面操作1:如何跟踪鼠标位置?
查看>>
Qt环境搭建(Visual Studio)
查看>>
QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
查看>>
QT样式表——url路径
查看>>
QT数据库(三):QSqlQuery使用
查看>>
QT教程5:消息框
查看>>
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
查看>>
pom.xml中提示web.xml is missing and <failonmissingw>...
查看>>
Pomelo开发中Web客户端开发API简介
查看>>
QT教程2:QT5的体系构架
查看>>
PON架构(全光网络)
查看>>
PoolingHttpClientConnectionManager原理剖析
查看>>
QT教程1:ubuntu18.04安装QT5
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
POP3 协议在计算机网络中的优缺点
查看>>
qt批量操作同类型控件
查看>>
Portaudio笔记-WASAPI
查看>>
position:fixed失效情况
查看>>
Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
查看>>