当前位置:   article > 正文

.net8与Docker的邂逅_net8 dockerfile

net8 dockerfile

前言

随着对.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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

右键项目,在文件资源管理器中打开,在有.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,页面都会不显示。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/987619
推荐阅读
相关标签
  

闽ICP备14008679号