赞
踩
随着对.net的学习,我了解了项目部署的方式,有WindowsServer的IIS传统部署,也有跨平台的kestrel部署。但是每次更新,我都需要把代码手动替换掉,这样并不方便,于是我开始学习运维的一些知识。
我发现了Docker的好处,项目生成镜像文件之后,我可以放到任意的服务器中去部署,非常的方便。
首先,电脑上要安装好Docker Desktop,并且它能正常工作。如果条件可以的话,可以申请一个Docker Hub的账号(.net可以直接把项目打包到Hub上面,再也不用担心文件丢失了)。
注意:后面的内容都是基于Linux容器进行的,要确认好当前Docker Desktop的环境。
由于是第一次使用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,页面都会不显示。
调用接口发现接口可以正常访问:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。