.Net Core:将控制台程序部署到Docker

本文详细介绍了如何在Windows环境下,使用Docker部署.Net Core控制台应用程序。从下载Docker for Windows开始,逐步讲解了安装Kitematic、创建.Net Core项目、发布项目、修改Dockerfile、构建镜像以及创建和管理容器的全过程,最终实现应用程序的本地访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker的好处就不多说了,网上博客描述多的很,总之就是要解决“在我电脑上还好好的”类似这种部署问题。对于Win10系统,据说只支持Win10 专业版的。注册DockHub账户地址:https://hub.docker.com/

1:下载Docker for Windows Installer

下载入口:

文件还是比较大的,有834M。按着提示一步安装下去。成功之后运行桌面图标,在右下角任务栏出现Docker的图标,右键出现:

使用你注册的账户登陆到Docker Hub。

检测是否安装成功

打开cmd命令窗口,输入:docker --version

出现版本号表示安装成功了。

2:安装Kitematic

步骤1中的“Kitematic”选项,这个是管理容器的工具,对于容器的启动,暂停,删除等是相当方便的。

3:创建.Net Core 控制台程序

之前的选择项目类型不多叙述。 在步骤3中,注意选择“启用Docker 支持”,按着下边的提示(需要Docker Desktop),一定要提前安装好Docker for Windows Installer。生成的项目中自动包含一个Dockerfile文件:

#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.1-nanoserver-1803 AS build
WORKDIR /src
COPY ["WebApp/WebApp.csproj", "WebApp/"]
RUN dotnet restore "WebApp/WebApp.csproj"
COPY . .
WORKDIR "/src/WebApp"
RUN dotnet build "WebApp.csproj" -c Release -o /app

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

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

至于FROM ,WORKDIR,COPY关键字的含义,自己动手查询一下即可。

修改CreateWebHostBuilder

 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
               .UseUrls("http://*:5001")
                .UseStartup<Startup>();
  • 增加UseUrls 【5001 表示要监听的端口】

修改Configure

  • 输入“Hello World  v1”。

4:发布项目

选中项目右键-》发布

选择启动-》文件夹-》发布,发布成功会输出信息

同时发布界面也有部分改变

  • 目标位置 【发布之后的文件路径】
  • 配置 【注意在Release文件夹下】

5:修改Dockerfile文件

将Dockerfile拷贝到Docker文件夹下,与Output文件夹同一级,这里对Dockerfile进行一下修改。

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 5001
COPY Output /app/
#EXPOSE 443
#
#FROM mcr.microsoft.com/dotnet/core/sdk:2.1-nanoserver-1803 AS build
#WORKDIR /src
#COPY ["WebApp/WebApp.csproj", "WebApp/"]
#RUN dotnet restore "WebApp/WebApp.csproj"
#COPY . .
#WORKDIR "/src/WebApp"
#RUN dotnet build "WebApp.csproj" -c Release -o /app
#
#FROM build AS publish
#RUN dotnet publish "WebApp.csproj" -c Release -o /app
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApp.dll"]

  • EXPOST 5001  【在CreateWebHostBuilder中配置的端口】
  • COPY Output /app/   【发布文件路径中的Output文件夹】
  • 中间注释的部分

6:使用PowerShell创建镜像

在步骤2中启动PowerShell或者在Docker文件夹下按着“Shift”键-右键选项。

执行Build命令 :

docker build -t lxxservice:v1 D:\测试\WideWorldImporters.API\WebApp\bin\Release\netcoreapp2.1\publish\Docker
  • lxxservice:v1   表示镜像名称以及版本,版本不指定默认为latest。【名称貌似只能是小写字母】

查看镜像,输入:

docker images

7:创建容器

查看当前容器

输入cmd:

docker ps

  • CONTAINER ID  容器ID  【目前只存在2个容器】

为镜像lxxservice:v1 创建容器

输入cmd:

docker run -p 5002:5001 lxxservice:v1

  • 5002 表示映射到本机的端口 【在浏览器或者posman中输入这个端口】
  • 5001 表示容器的端口 【在CreateWebHostBuilder中配置的端口】

查看容器信息

输入cmd:

docker ps

  • 画线部分为新创建的容器以及镜像信息 
  • CONTAINER ID 数量现在为3个

在浏览器中输入:http://localhost:5002/

步骤可能有些简单,不过还是捣鼓出来了。有机会在Lunix系统上部署一下试试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值