1.创建webapi项目
打开vs2022,创建一个新的webapi项目。
默认选项,一直下一步就ok。注意框架要使用.net6.0,不要选择.netframework(不支持跨平台)。
创建完后,已经生成完整的示例代码了,这个项目是可以直接运行的。这里我们在Program.cs文件中,稍作修改,在最后一行Run方法指定api的端口号,如下:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run("http://*:1040");
运行起来
在浏览器输入地址“http://localhost:1040/WeatherForecast”,结果如下:
项目运行没有问题。下一步要部署到linux上去。
2.生成Dockerfile
右键项目,选择“添加”-“Docker支持”。
选择“Linux”,确定。
在项目下会生成一个Dockerfile(没有后缀名),修改暴露的端口,内容如下:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 1040
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyWebapiTest/MyWebapiTest.csproj", "MyWebapiTest/"]
RUN dotnet restore "MyWebapiTest/MyWebapiTest.csproj"
COPY . .
WORKDIR "/src/MyWebapiTest"
RUN dotnet build "MyWebapiTest.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyWebapiTest.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebapiTest.dll"]
将Dockerfile复制到上一级目录(即和解决方案.sln文件同一级目录)下。
3.上传至Linux
将整个项目的源码上传至linux,这里使用PSFTP工具。打开psftp,使用命令
open 192.168.1.23
其中的ip地址是linux服务器的地址。输入用户名和密码,就可以进入了。
进入后先创建一个临时目录“temp”,用于存放MyWebapiTest项目源码。
mkdir temp
设置linux远端目录
cd temp
设置windows本地目录
lcd D:\test
D:\test是MyWebapiTest项目所在目录,上传整个文件夹MyWebapiTest。
put -r MyWebapiTest
上传完后,使用“ls”命令查看。
4.Docker部署
打开工具PuTTY,连接Linux,输入用户名、密码进入。
进入“temp/MyWebapiTest”目录。
cd temp/MyWebapiTest
使用以下命令,根据temp/MyWebapiTest下的Dockerfile文件,编译项目并创建docker镜像。
docker build -t dotnetapitest .
dotnetapitest是镜像名称,注意最后还有个“ .”
使用“docker images”查看所有镜像。
使用以下命令,创建和启动容器
docker run --name dotnetapitest -p 1040:1040 -d dotnetapitest
以上命令中,第一个dotnetapitest是容器名,第二个是镜像名。
–name 为容器指定一个名称
-p 1040:1040 指定容器暴露的端口
运行起来后,使用如下命令查看日志信息:文章来源:https://www.toymoban.com/news/detail-512924.html
docker logs --tail=1000 dotnetapitest
显示如下信息,则表示webapi已经在运行了
打开浏览器,输入地址“http://192.168.1.23:1040/WeatherForecast”,和本地运行结果一致,docker部署成功。文章来源地址https://www.toymoban.com/news/detail-512924.html
到了这里,关于如何在linux上使用docker发布.net6.0的webApi项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!