.NET Core的优势之一就是跨平台特性,而Docker容器化技术更能充分利用这一特性,在目前的Visual Studio版本中可以方便的讲.NET Core应用部署至Dokcer容器。
使用Visual Studio打开代码解决方案,在已有的.NET Core项目上右键选择“添加>Docker支持”。
在显示的窗口中勾选Docker文件选项,根据目标操作系统的类型勾选Windows或Linux。
如果需要在本地环境进行测试,可以提前在本地计算机安装桌面版Docker。在安装Docker的前提下,系统会提示是否启动Docker-Desktop(如果已经启动了就不会有这个提示)。
注意:如果在创建代码项目时已经勾选Docker支持,可以直接跳到下一步。
项目中被自动添加一个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.1-buster-slim AS base #工作目录 WORKDIR /app #端口号 EXPOSE 80 #基础镜像版本 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src #复制文件至镜像的文件系统 COPY ["src/AbpDemo.Web/AbpDemo.Web.csproj", "src/AbpDemo.Web/"] COPY ["src/AbpDemo.EntityFrameworkCore/AbpDemo.EntityFrameworkCore.csproj", "src/AbpDemo.EntityFrameworkCore/"] COPY ["src/AbpDemo.Core/AbpDemo.Core.csproj", "src/AbpDemo.Core/"] COPY ["src/AbpDemo.Application/AbpDemo.Application.csproj", "src/AbpDemo.Application/"] RUN dotnet restore "src/AbpDemo.Web/AbpDemo.Web.csproj" COPY . . WORKDIR "/src/src/AbpDemo.Web" RUN dotnet build "AbpDemo.Web.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "AbpDemo.Web.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "AbpDemo.Web.dll"]dockerfile主题内容一般分为4部分:基础镜像信息,维护者信息使用label指令,镜像操作指令,容器启动时执行指令
之后将dockerfile文件属性设置为“始终复制”,点击项目右键菜单“发布”,将项目发布到本地目录。
在项目发布目录打开cmd或PowerShell,输入命令开始构建Docker镜像
docker build -t xxxxxx .
注意:后面有一个“.”点号
加载已构建完成的镜像,执行命令创建并启动镜像实例。
docker run -d -p 8088:8088 -name demoapi xxxx