.net8与Docker的邂逅

前言

随着对.net的学习,我了解了项目部署的方式,有WindowsServer的IIS传统部署,也有跨平台的kestrel部署。但是每次更新,我都需要把代码手动替换掉,这样并不方便,于是我开始学习运维的一些知识。
我发现了Docker的好处,项目生成镜像文件之后,我可以放到任意的服务器中去部署,非常的方便。

一、Docker Desktop

首先,电脑上要安装好Docker Desktop,并且它能正常工作。如果条件可以的话,可以申请一个Docker Hub的账号(.net可以直接把项目打包到Hub上面,再也不用担心文件丢失了)。
在这里插入图片描述

注意:后面的内容都是基于Linux容器进行的,要确认好当前Docker Desktop的环境。

二、创建WebAPI项目

由于是第一次使用Docker,我在创建项目的时候很小心,一些额外的配置都没有添加。
在这里插入图片描述
像上面这样创建好了项目之后,再创建一个Dockerfile文件,当然不需要我们手动写配置,只需要:
右键项目——添加——Docker支持…——Linux,就会自动生成Dockerfile。

三、发布项目生成镜像

发布项目为Docker的镜像文件有两种方式。
第一种方式就是右键项目——发布——Docker容器注册表:
在这里插入图片描述

在这里插入图片描述
如果你是刚开始使用Docker,我并不推荐这种方式,因为这种方式是直接把你的镜像文件发布到DockerHub中或者别的云端。这需要你有一个DockerHub的账号,并且能顺利访问DockerHub才可以。
如果这是把文件生成到本地的话,我推荐使用第二种方式。

第二种方式:

修改项目文件:

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <InvariantGlobalization>true</InvariantGlobalization>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <!--加入下面这行代码,它决定了你生成的镜像文件叫什么名字-->
	<ContainerRepository>iman-image</ContainerRepository>
  </PropertyGroup>

右键项目,在文件资源管理器中打开,在有.csproj文件和Dockerfile的层级中打开终端,并输入一下命令行:

dotnet publish --os linux --arch x64 /t:PublishContainer -c Release

执行完毕后,打开Docker Desktop,你就会发现镜像已经发布完成了。

第二种方式是我在微软的官方文档中看到的,如果有兴趣可以详细了解:
微软官方文档地址

四、创建容器

如果项目镜像文件打包到了DockerHub中,那么需要提前先把镜像文件Pull到本地中:
在这里插入图片描述
执行镜像文件:
在这里插入图片描述
点击三角按钮后,会弹出一个配置窗口,先输入容器的名称,再输入本地的端口号,如果你的端口使用的比较多,那就输入0可以自动生成端口。
在这里插入图片描述
配置完成后,点击RUN。容器就生成,并且跑起来了。
在这里插入图片描述

注明:因为没有配置Swagger,这里部署好的项目是不能访问Swagger的。

http://localhost:8080/swagger/index.html或者http://localhost:8080,页面都会不显示。

调用接口发现接口可以正常访问:
在这里插入图片描述

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coding唯手熟尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值