首页 > 系统相关 >.Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

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

时间:2024-09-29 11:05:53浏览次数:1  
标签:WebApi 容器 项目 命令 Linux 镜像 Net Dockerfile docker

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

 

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 负载均衡配置,提高程序的性能。

 

标签:WebApi,容器,项目,命令,Linux,镜像,Net,Dockerfile,docker
From: https://www.cnblogs.com/sexintercourse/p/18439178

相关文章

  • .Net 6 SignalR 实际业务开发中遇到的问题及解决办法
    .Net6SignalR实际业务开发中遇到的问题及解决办法 一、SiganlR使用的协议类型1.websocket即时通讯协议2.Server-SentEvents(SSE)服务器事件3.longpolling长轮询。如果客户端开启协商,会按顺序选择可兼容的协议。(默认开启协议协商)如果客户端禁用协商,只能websocket协......
  • .NET常见的几种项目架构模式,你知道几种?(附带使用情况投票)
    .NET常见的几种项目架构模式,你知道几种?(附带使用情况投票) 思维导航前言三层架构MVC架构DDD分层架构整洁架构CQRS架构最后总结参考文章DotNetGuide技术社区前言项目架构模式在软件开发中扮演着至关重要的角色,它们为开发者提供了一套组织和管理代码的指导原则,以......
  • linux系统下信号的概念以及相关操作函数(如何产生、捕捉信号)
    1.信号的概念信号在我们的生活中随处可见,如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪......他们都有共性:1.简单2.不能携带大量信息3.满足某个特设条件才发送。信号是信息的载体,Linux/UNIX环境下,古老、经典的通信方式,现下依然是主要的通信手段。U......
  • .Net Web项目中,实现轻量级本地事件总线 框架
    .NetWeb项目中,实现轻量级本地事件总线框架 一、事件总线设计方案1.1、事件总线的概念事件总线是一个事件管理器,负责统一处理系统中所有事件的发布和订阅。事件总线模式通过提供一种松耦合的方式来促进系统内部的业务模块之间的通信,从而增强系统的灵活性和可维护性。1......
  • ‌Java JVM相当于.NET Core的CLR。
    ‌JavaJVM相当于.NETCore的CLR。Java虚拟机(JVM)和.NET的公共语言运行时(CLR)在内部工作方面有相似之处,但也有一些区别。JVM的主要作用是将编译后的Java字节码转换为特定计算机上的可执行代码,允许跨平台的执行,并提供内存管理和垃圾回收功能。CLR作为.NET框架的核心组件,也是将.NET代......
  • 第28篇 如何.net中实现高效可靠数据同步api
    通过以下方式可以高效,并保证数据同步的可靠性1.API设计使用RESTful设计,确保API端点明确,并使用适当的HTTP方法(如POST用于创建,PUT用于更新)。设计清晰的请求和响应模型,以确保客户端能够理解预期格式。2.数据验证在服务器端进行严格的数据验证,确保接收到的数据符合预期格式和......
  • VMware Tanzu Kubernetes Grid Integrated Edition 1.20 发布下载,新增功能概览
    VMwareTanzuKubernetesGridIntegratedEdition1.20发布下载,新增功能概览VMwareTanzuKubernetesGridIntegratedEdition(TKGI)1.20.0-运营商Kubernetes解决方案Kubernetes-basedcontainersolutionwithadvancednetworking,aprivatecontainerregistry,an......
  • idea启动卡在启动界面不动弹,java.net.BindException: Address already in use: bind
    早上刚想打开idea发现卡在启动界面无法动弹任务管理器关闭idea和重启机器都无法解决,搜了一下网上的教程把解决方法记录下:打开AppData\Local\JetBrains\IntelliJIdea2021.2\log查看idea.log发现详细错误如下:2024-09-2908:46:57,944[10149]ERROR-llij.ide.plugins.Plugi......
  • Linux防火墙-filter表
    作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主,而云服务器基本上就不会使用系统自带的防火墙......
  • 2024全网最为详细的红帽系列(1)【RHCE-LJS之Linux高端骚操作实战篇】保姆级别实战教程
    欢迎各位彦祖与热巴畅游本人专栏与博客你的三连是我最大的动力以下图片仅代表专栏特色 专栏跑道一 ➡️ MYSQLREDISAdvanceoperation专栏跑道二➡️ 24NetworkSecurity-LJS ​​ ​专栏跑道三➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]​......