如何在linux上使用docker发布.net6.0的webApi项目

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 指定容器暴露的端口
运行起来后,使用如下命令查看日志信息:

docker logs --tail=1000 dotnetapitest

显示如下信息,则表示webapi已经在运行了
在这里插入图片描述
打开浏览器,输入地址“http://192.168.1.23:1040/WeatherForecast”,和本地运行结果一致,docker部署成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hyq106

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

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

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

打赏作者

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

抵扣说明:

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

余额充值