Dockerize an ASP.NET Core application

原文:Dockerize an ASP.NET Core application

介绍

本示例演示了如何对ASP.NET Core应用程序进行容器化。

为什么要构建ASP.NET Core?

  • 开源
  • 在Windows、MacOS和Linux上跨平台开发和运行ASP.NET Core应用
  • 非常适合现代基于云的应用程序,例如Web应用程序,IoT应用程序和移动后端
  • ASP.NET Core应用程序可以在.NET Core或完整的.NET Framework上运行
  • 旨在为部署到云或本地运行的应用程序提供优化的开发框架
  • 具有最小开销的模块化组件可在构建解决方案时保持灵活性

先决条件

本示例假定您的计算机上已经有一个ASP.NET Core应用程序。如果您不熟悉ASP.NET,则可以按照一个简单教程来初始化项目或克隆我们的ASP.NET Docker示例

为ASP.NET Core应用程序创建Dockerfile

  1. 在您的项目文件夹中创建一个Dockerfile
  2. 将以下文本添加到Linux或Windows容器Dockerfile中。以下标签是多体系结构的,这意味着它们会根据Docker Desktop for Windows中设置的模式拉入Windows或Linux容器。阅读有关切换容器的更多信息。
  3. Dockerfile假定您的应用程序名为aspnetapp。将Dockerfile更改为使用项目的DLL文件。
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
  1. 要使构建上下文尽可能小,请将.dockerignore文件添加到项目文件夹,然后将以下内容复制到其中。
bin/
obj/

构建并运行Docker映像

  1. 打开命令提示符,然后导航到您的项目文件夹。
  2. 使用以下命令来构建和运行您的Docker映像:
$ docker build -t aspnetapp。
$ docker run -d -p 8080:80 --name myapp aspnetapp

查看从容器运行的网页

  • 转到localhost:8080在Web浏览器中访问您的应用程序。
  • 如果您使用的是Nano Windows容器,但尚未更新至Windows Creator更新,则存在一个错误会影响Windows 10如何通过"NAT"(网络地址转换)与容器进行对话。您必须直接点击容器的IP。您可以通过以下步骤获取容器的IP地址:
    1. 运行
      docker inspect -f“ {{.NetworkSettings.Networks.nat.IPAddress}}” myapp
    2. 复制容器IP地址并粘贴到浏览器中。 (例如172.16.240.197

进一步阅读

posted @ 2022-03-31 09:39  桁椽  阅读(32)  评论(0编辑  收藏  举报