博客
关于我
.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/

你可能感兴趣的文章
python selenium自动化测试报告
查看>>
Python selenium自动化测试框架实战 —— 登录测试案例
查看>>
Python Selenium设计模式 —— POM
查看>>
Python Serial:如何使用 read 或 readline 函数一次读取多个字符
查看>>
Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
查看>>
Python setup.py:数据文件无法复制目录:不存在或不是常规文件
查看>>
Python setuptools sdist:仅安装版本化文件
查看>>
Python Shell下使用matplotlib
查看>>
Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
查看>>
python socket分包发送数据
查看>>
python socket模块_Python socket模块实现TCP服务端客户端
查看>>
Python SOCKS5代理客户端HTTPS
查看>>
Python Soc网络分析:通过使用函数迭代列表来计算机会网络
查看>>
python转换已转义的字符串
查看>>
Python Sphinx自动摘要:成员函数的自动列表
查看>>
Python SQL和NoSQL数据库操作实战
查看>>
python stdout flush_sys.stdout.flush()方法的用法
查看>>
python string 运算
查看>>
Python str与bytes之间的转换
查看>>
Python subprocess ffmpeg
查看>>