使用 Visual Studio .NET Core 为简单的 Web 应用程序和托管创建 Docker 映像

作者 : 慕源网 本文共3385个字,预计阅读时间需要9分钟 发布时间: 2021-11-9 共518人阅读

介绍

为 .NET Core Web 应用程序创建一个简单的 docker 映像并将其运行到本地计算机以及 Azure 容器服务中。 

在阅读本文之前,请先阅读有关 docker 和相关领域的其他文章以了解基本概念。

语言前的

你需要在你的机器上安装 docker for windows 和 .Net Core SDK:

  • https://docs.docker.com/docker-for-windows/install/
  • https://dotnet.microsoft.com/download/dotnet-core/2.2 

第1步

打开 Visual Studio 2019 并创建一个新项目。

第2步

选择 ASP.Net Core Web 应用程序 –> 单击下一步 –> 提供项目名称。

第 3 步

单击创建,然后选择 .Net Core 作为框架并选择 .Net Core 2.2 。接下来,在左侧面板中选择 Web 应用程序。在右侧面板中,选择启用Docker支持并确保选择了 windows 选项。此docker 镜像是特定于 Windows 的。

注意

如果您在创建应用程序时错过了为 Windows 支持选择 docker,请不要担心,您还有另一个选择。右键单击解决方案资源管理器中的项目,然后选择添加 –> 在那里您可以看到 docker 支持。

第四步

创建示例项目后,您可以在已创建项目的解决方案资源管理器中访问 DockerFile。在那里您可以找到一些命令,这些命令说明了创建此应用程序的图像要遵循的步骤。您还可以在项目解决方案资源管理器中看到 .dockerignore 文件。它就像一个 git ignore 文件,在创建 docker 镜像时忽略一些文件。

例如:

# Get base sdk from microsoft  
#Copy the CSPROJ and any dependencies via nuget  
  
//FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-nanoserver-1809 AS base  
//WORKDIR /app  
//EXPOSE 80 ---> For Port mapping with container.  
 
#Copy our project files and build our release  
  
//FROM mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1809 AS build  
//WORKDIR /src  
//COPY ["dockerdemowebapp/dockerdemowebapp.csproj", "dockerdemowebapp/"]  
//RUN dotnet restore "dockerdemowebapp/dockerdemowebapp.csproj"  
//COPY . .  
//WORKDIR "/src/dockerdemowebapp"  
//RUN dotnet build "dockerdemowebapp.csproj" -c Release -o /app  
  
//FROM build AS publish  
//RUN dotnet publish "dockerdemowebapp.csproj" -c Release -o /app  
  
//FROM base AS final  
//WORKDIR /app  
//COPY --from=publish /app .  
//ENTRYPOINT ["dotnet", "dockerdemowebapp.dll"  

第 5 步

最后,我们的应用程序包含以下文件。

第 6 步

让我们从创建 docker 映像开始,以便在项目文件位置执行打开命令提示符。这意味着以下文件夹位置:

第 7 步

在打开的命令提示符下输入以下命令来创建镜像。docker build -t dockerhubid/projectname: latest 。

命令:docker build -t dockerhubid/projectname: latest。

所以在我们的例子中,命令就像 docker build -t dockerhubid/dockerdemowebapp 。

-t –> 表示使用以下名称标记此镜像。

dockerhubid –> https://hub.docker.com/ // 这里可以创建docker hubid。

dockerhubid/dockerdemowebapp –> 您可以在该位置提供任何名称,但是当您尝试将此 docker 容器托管到 Azure 或任何其他云服务时,意味着您应该将此 docker 容器映像移动到 docker hub 中,然后只有您可以部署。

通过项目名称,它表示我们给出的全名。

最后我们有 . (点)符号,这对空格很重要。我们必须遵循docker原则。

注意
在命令部分,可以看到最新的关键字。它不是强制性的,如果没有提供,它将采用最新版本。

第 8 步

当您按 Enter 键时,它会尝试读取 docker 文件并执行我们编写的命令。让我们看看!!

步骤 9

哎呀,出了点问题,这是因为 docker 文件不在正确的位置。打开文件资源管理器并导航到项目位置。将 dockerfile 向后移动一步,这意味着将 docker 文件移动到解决方案文件位置并在该位置打开命令提示符。如下图所示。

第 10 步

现在输入 build 命令并等待执行 docker file 命令(这意味着依赖项和所有其他相关的)。命令成功后,您可以看到成功窗口。

第 11 步

成功创建 docker 镜像后,您可以输入以下命令查看镜像。

命令:docker images

在那里您可以看到您最近创建的图像。

第 12 步

所以,我们已经创建了 docker 镜像。现在我们需要在本地运行这个镜像。为此,我们需要一个容器来运行此映像。这个过程可以通过运行以下命令来实现。

命令:docker run -p 9090:80 dockerhubid/projectname

-p –> 表示端口映射。

9090 –> 这是我们运行应用程序的随机端口号(我们可以提供自己的)。

80 –> 这个是我们在创建镜像时暴露了80端口。因此,我们必须将端口号与我们现在创建的容器进行映射。

所以让我们通过在我们的例子中运行命令来看看。

第 13 步

成功现在我们的应用程序在此 URL 中作为 docker 镜像运行。

http://localhost:9090/

第 14 步

就是这样 !!!我们已经创建了一个 docker 镜像并在我们的本地机器上运行它。

现在我们需要将它部署到 Azure 中。为此,我们需要一个分布式环境中的 docker 镜像。这是我们可以轻松地将 docker 镜像从那里部署到 azure 容器服务中。

所以我们可以将我们的 docker 镜像移动到 dockerhub 存储库中。为此,请执行以下命令。

命令: docker push dockerhubid/projectname

当你在我们的命令提示符中运行这个命令时,它看起来像下面这样:

将 docker 映像推送到 docker hub 后,您可以访问 docker hub 登录并查看您的存储库,如下所示。

注意
您可以将此存储库设为公开或私有。如果它是私有的,那么您必须在从 azure 服务获取此镜像时提供用户名和凭据。所以现在,我们将其公开。(单击存储库,转到设置并将其设为公开)

第 15 步

部署到 Azure 服务:

  1. 需要 Azure 门户订阅。
  2. 需要创建一个 Azure 容器实例。

第 16 步

  1. 在新选项卡中打开https://portal.azure.com并输入您的凭据。
  2. 然后导航以添加资源部分 –> 键入“容器实例”。
  3. 创建一个新的容器实例资源,如下所示:
注意
镜像名称应与我们在创建 docker 镜像时提供的名称相同。

镜像名称:dockerhubid/项目名称。基于此 docker hub id,它将获取并获取映像并进行部署。

第 17 步

在 Azure 容器服务网络选项卡中,您需要提供一些 DNS 名称来运行我们的应用程序。

就是这样,现在您可以查看 + 创建。它将在 azure 容器服务中部署我们的应用程序。

因此,一旦部署成功,请转到资源并在浏览器选项卡中选择 DNS 名称和选项卡。

就是这样,我们的应用程序在 azure 服务中运行。我希望这对你有帮助。

Docker 中的一些命令

docker version – 版本
docker info – 提供有关已安装 docker 的信息
docker ps – 容器列表
docker images – 镜像列表
docker start containerid – 启动给定的容器
docker stop containerid – 停止给定的容器

慕源网 » 使用 Visual Studio .NET Core 为简单的 Web 应用程序和托管创建 Docker 映像

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录