首页 文章详情

.NET 6 WebAPI 项目部署到 Linux 系统上的 Docker 容器

DotNet NB | 397 2022-06-01 14:27 0 0 0
UniSMS (合一短信)

1、创建一个基础的 WebAPI 项目

注意:因为发布时候,Dockerfile文件必须和解决方案.cspro文件放在同级,所以建议勾上这个,当时遇到这个问题,导致打包镜像时找不到.cspro文件,搞了好久

点击创建,项目基础框架是这样的:

在Program中能够看到 MinimalApi 自带的示例:

切换到项目配置运行,能够请求到数据:

2、将项目文件用Xftp拷贝到Linux系统中,我这里用的是VMWare虚拟机的CentOS7系统,

拷贝到root目录下,自建一个发布项目的文件夹(这里我创建的是DockerPublish文件夹)里面

3、输入命令,进入到项目文件夹里面:

系统需装好docker,安装好常用的命令、配置好环境。

输入命令:docker images  -查看当前的全部镜像:

4、通过 Dockerfile 文件 ,将项目打包成镜像:

命令:docker build -t [新建的镜像名]:[指定的版本号] -f Dockerfile .

注意:Dockerfile 后面的 "." 不可少!

输入打包镜像的命令之后,开始打包,看到如下信息表示镜像创建成功:

5、通过镜像构建容器实例:

命令:docker run --name mywebapi -d -p 5566:80 net6webapi:1.0

命令格式:docker run --name [自定义容器名] -d -p [自定义对外端口]:[Dockerfile中指定的端口,不修改的话,一般都是80] [镜像名]:[版本号]

容器创建好之后,通过命令 :docker ps (查看正在运行的容器) , docker ps -a (查看全部容器)

docker ps 能够看到刚才创建的容器,就成功了:

接下来在电脑上,通过虚拟机的地址访问mywebapi,可以用 ifconfig 命令 查看虚拟机地址,

如果你和我一样也用的 Xshell7 连接工具,那么左下角可以直接看到虚拟机的地址:

浏览器输入地址 :192.168.146.129:5566/weatherforecast 能够访问到数据,就成功了!

5566端口即为第5步,镜像实例化成容器时,指定的容器端口

注意:如果访问不到,但是 docker ps 可以看到容器,说明容器运行了,但是镜像有问题,会有报错,

通过命令:docker logs [容器名] 可以看到运行的容器,报错日志

6、通过一个镜像,构建多个容器实例,给不同端口,拿到一个镜像,哪儿都能跑起来,跑同一套代码

如果部署到服务器上,别人拿到我的镜像,也能跑我的代码,这就是docker的优势,一个镜像就是整个程序。

在实际项目开发中,会将同一个镜像的多个容器实例,使用 Nginx 负载均衡配置,提高程序的性能。


推荐阅读:
  API 工程化分享
  我的微软 MVP 之路
【译】ASP.NET Core 6 中的性能改进
【译】.NET 7 预览版 1 中的 ASP.NET Core 更新
【译】C# 11 特性的早期预览

点击下方卡片关注DotNet NB

一起交流学习

▲ 点击上方卡片关注DotNet NB,一起交流学习

请在公众号后台

回复 【路线图】获取.NET 2021开发者路线图
回复 【原创内容】获取公众号原创内容
回复 【峰会视频】获取.NET Conf开发者大会视频
回复 【个人简介】获取作者个人简介
回复 【年终总结】获取作者年终总结
回复 加群加入DotNet NB 交流学习群

长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter