windows上用VS2019开发的 .NETCore项目如何打包部署到linux Docker中

现在Docker技术非常的流行,不知道一点都不好意思说自己是一个开发者。作为.NETCore开发者来说,大部分都是在windows上进行开发,而Docker是linux阵营里养大的娃,(windows上安装的Docker实际上跑在虚拟linux系统上),那么如何将windows上开发的NET Core项目部署到linux上的Docker中呢?下面就一步一步,详细说明如何去做。

1.在VS2019中发布项目

VS2019对Docker是支持的,在项目中右键“添加”——“Docker支持”,之后项目中会生成一个Dockerfile文件(无后缀)。
默认生成的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/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["Samples/ApiGateway/ApiGateway.csproj", "Samples/ApiGateway/"]
COPY ["Jimu.Modules/Jimu.Client.Discovery.Consul/Jimu.Client.Discovery.Consul.csproj", "Jimu.Modules/Jimu.Client.Discovery.Consul/"]
COPY ["Jimu.Client/Jimu.Client.csproj", "Jimu.Client/"]
COPY ["Jimu.Core/Jimu.Core.csproj", "Jimu.Core/"]
COPY ["Jimu.Modules/Jimu.Client.ApiGateway.Swagger/Jimu.Client.ApiGateway.Swagger.csproj", "Jimu.Modules/Jimu.Client.ApiGateway.Swagger/"]
COPY ["Jimu.Modules/Jimu.Client.Diagnostic.Skywalking/Jimu.Client.Diagnostic.Skywalking.csproj", "Jimu.Modules/Jimu.Client.Diagnostic.Skywalking/"]
RUN dotnet restore "Samples/ApiGateway/ApiGateway.csproj"
COPY . .
WORKDIR "/src/Samples/ApiGateway"
RUN dotnet build "ApiGateway.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ApiGateway.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ApiGateway.dll"]

命令很多,但是这里比不需要这么复杂,需要做一下修改。(记得将Dockerfile属性设置成“始终复制”)
在这里插入图片描述

修改后的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/core/aspnet:3.0-buster-slim 
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster 
ENV ASPNETCORE_URLS=http://+:8000 
EXPOSE 5000
EXPOSE 8000

WORKDIR /app
COPY . /app/
ENTRYPOINT ["dotnet", "ApiGateway.dll"]

注:Dockerfile文件也可以自己在记事本中直接编辑好后与发布的文件发在一起即可。
项目编译发布:
发布设置如下图
在这里插入图片描述
等待发布完毕,将发布文件传到linux机器上上(可以使用工具Xftp6等进行此操作)。

2. Docker镜像生成

进入linux系统中,找到相应目录(上一步中传送的发布文件)
在这里插入图片描述
输入Docker命令 生成docker Image:docker build -t testapi .(注意后面有一个点号;命名中不能有大写。)
该命令会根据Dockerfile文件生成一个名为“testapi”的docker镜像文件。
在这里插入图片描述
生成后可以用命令:docker images查看一下刚才生成的镜像文件“testapi”

3. 根据Docke镜像文件生成容器

有了镜像文件,剩下的就是生成容器,启动即可。
命令:docker run --name testapidemo -p 8080:8000 testapi
在这里插入图片描述
(暴露的端口就是Dockfile中编写的端口号。)
最后,查看能否正常访问:
在这里插入图片描述
(把访问的IP地址化成您linux上的ip。具体地址看你的项目怎么设置的了。)

这个apiDemo是我使用Jimu框架中的一个网关demo。里面集成了swagger,所以访问的也是swagger页面。
环境:
.net core 3.0 vs2019
linux CentOS7
docker版本:19.03.8

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值