准备工作
- 一台Linux服务器(我的云服务器版本是CentOS 8.3 64位)
- Linux需要装Docker
- Linux需要安装.net core 5.0的运行时基础镜像(docker pull microsoft/dotnet即可,这个是最简单的办法,可以按照自己的需要安装不同的官方基础镜像)
- .net core 5.0的项目
开始
- 使用VS2019打开需要部署的.net core 5.0的项目
- 选中项目,右键 -> 添加->Docker支持->Linux,会生成一个Dockerfile文件,此文件就是用于docker生成镜像的,并通过此文件启动我们的项目
#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:5.0-buster-slim AS base WORKDIR /app EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build WORKDIR /src COPY ["Wcg.FileService/Wcg.FileService.csproj", "Wcg.FileService/"] RUN dotnet restore "Wcg.FileService/Wcg.FileService.csproj" COPY . . WORKDIR "/src/Wcg.FileService" RUN dotnet build "Wcg.FileService.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "Wcg.FileService.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Wcg.FileService.dll"]
- 修改VS帮我们生成的Dockerfile文件;因为此次记录只做一次简单的展示,而VS帮我们生成的文件是从解决方案进行编译和发布最终执行的,所以需要修改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:5.0-buster-slim AS base # 设置工作目录 WORKDIR /app # 把目录下的内容都复制到当前目录下 COPY . . ENV ASPNETCORE_URLS http://+:10957 # 暴露端口 EXPOSE 10957 #程序入口 ENTRYPOINT ["dotnet", "Wcg.FileService.dll"]
- 发布项目,选择项目右键发布,点击发布,成功后进入发布的文件夹
- 将发布文件夹打包上传到Linux服务器中
- cd到发布的文件夹,解压文件,然后进入文件夹
-
在有Dockerfile文件的文件夹下生成Docker镜像
-
生成完镜像后,就可以通过镜像创建容器并将项目跑起来了
-
最终测试一下就OK了