本文共 2613 字,大约阅读时间需要 8 分钟。
作为一名开发人员,我决定从头开始学习 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(); } }} 选中项目右键添加 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 文档。
发送 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/