.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

  • .Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器已关闭评论
  • 29 次浏览
  • A+
所属分类:.NET技术
摘要

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


1.创建一个基础的WebApi项目

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

 

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

 

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

 

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

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

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

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

 

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

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

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

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