宝塔面板支持在Linux系统上部署Docker容器吗?
如何在宝塔面板上通过Docker部署VB.NET应用?
Docker容器中的VB.NET Asp.Net Core WebAPI应用如何配置?
一,首先,创建一个ASP.NET Core测试项目
1.1 打开VS2019/2022,创建一个.NTE6 Core控制台应用,为什么要这么干呢?因为VB已经不是MS的宠儿了,只能通过控制台,手动配置WebAPI
1.2 创建成功后,立即把项目关闭掉;然后去到项目根目录下( 项目名.vbproj )的.vbproj文件,使用文本编辑器打开,替换成一下内容,保存,重新打开项目即可!XML:
<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><!-- 项目的名称 --><RootNamespace>VB_NET_WebAPI_Test</RootNamespace> <TargetFramework>net6.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings></PropertyGroup><ItemGroup><PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.0" /></ItemGroup></Project>
1.3 替换(Program.vb)文件内容以,创建ASP.NET WebAPI应用
vb.net:
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.HostingModule ProgramSub Main(args As String())' 创建WebAPI容器Dim WebBuilder As WebApplicationBuilder = WebApplication.CreateBuilder(args)' 注入服务WebBuilder.Services.AddEndpointsApiExplorer() ' 访问节点WebBuilder.Services.AddControllers() ' 控制器WebBuilder.Services.AddSwaggerGen()' 创建应用Dim WebApp As WebApplication = WebBuilder.Build()WebApp.UseSwagger()WebApp.UseSwaggerUI(Sub(c)c.SwaggerEndpoint($"/swagger/v1/swagger.json", "test")c.ShowCommonExtensionsc.ShowExtensions()End Sub)'' 添加端口If WebApp.Environment.IsProduction ThenWebApp.Urls.Add("http://*:8001")End IfWebApp.UseAuthorization()WebApp.MapControllers()' 启动服务WebApp.Run()End Sub
End Module
1.4 创建一个测试控制器(HomeController),项目右键添加类,然后运行一下,成功即可!
VB.NET HomeController.VB
Imports Microsoft.AspNetCore.Authorization
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Extensions.Logging<ApiController, Route("")>
Public Class HomeControllerInherits ControllerBasePrivate ReadOnly PLogger As ILogger(Of HomeController)Public Sub New(logger As ILogger(Of HomeController))PLogger = loggerEnd Sub''' <summary>''' 数据主接口''' </summary>''' <returns></returns><HttpGet(), Route(""), AllowAnonymous>Public Function ApiHome() As ObjectResultReturn New ObjectResult("你好啊,一线编程! VB.NET Core API 接口! " & Now)End Function''' <summary>''' 文档跳转接口''' </summary>''' <returns></returns><HttpGet(), Route("Doc"), AllowAnonymous, ApiExplorerSettings(IgnoreApi:=True)>Public Function ApiDoc() As LocalRedirectResultReturn New LocalRedirectResult("/swagger", True)End Function
End Class
到此位置已经成功创建一个,VB.NET Core API 接口,下面正式开始Docker操作
二,给ASP.NET Core测试项目,添加Docker支持
2.1 项目右键,添加(Docker支持),Docker文件选择(Linux)
2.2 修改Docker的端口号为8001(自己随意,和Program.vb文件的端口对应即可),删掉443端口即可,然后点击保存,关闭项目即可!!!!
三,给ASP.NET Core测试项目,创建Docker镜像
3.1 在创建Docker前,开发电脑必须安装Docker,才能在命令行使用Docker指令,自行下载安装即可!安装完成在,Win+R,执行 docker -v 看到相应的版本安装成功!
下载地址:
https://www.docker.com/get-started/
3.2 确保Docker安装成功的前提下,回到测试项目根目录,在地址栏输入 CMD 运行命令行,然后运行一下,指令创建Dokcer镜像(注意后面的点不可少)
docker build --no-cache -t 镜像名称(小写) -f Dockerfile .
3.3 验证镜像是否创建成功!执行以下指令即可,看到对应名称即成功!
docker images -a
3.4 导出 镜像 以部署到 Linux OS 系统上,执行以下指令即可!
docker save webapitest -o F:\Rambo\桌面\webapitest.tar
四,在宝塔面板上部署ASP.NET Core测试项目
4.1 宝塔面板.安装Docker管理器,软件商店->搜索Docker->安装即可
4.2 测试项目镜像上传到,宝塔面板Docker
4.2.1 打开Docker管理器
4.2.2 跳到 镜像导出->上传文件 等待上传完毕,点击导入即可!!
4.2.3 回到容器列表 ,然后 创建容器 最后放行对应的端口即可!!
测试地址:
http://42.193.251.120:8001/
http://42.193.251.120:8001/doc
好了,今天的内容到此结束了!
当然,上面的方式都是可视化的比较简单,但这也是我们追求的,化繁为简!