原文: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

进一步阅读

最新文章

  1. CSS导航的魔力——源自温谦老师《CSS彻底研究设计》
  2. sql date()函数
  3. oracle ebs request一直pending
  4. DNF技能贴图的研究
  5. ASP.NET 使用mode=”InProc”方式保存Session老是丢失,无奈改成StateServer 模式。
  6. What's the difference between all the Selection Segues
  7. 详细介绍Linux shell脚本基础学习
  8. 驱动里执行应用层代码之KeUserModeCallBack(WOW64是由三个动态库wow64.dll wow64win.dll wow64cpu.dll来实现)
  9. Android网络传输中必用的两个加密算法:MD5 和 RSA
  10. mwc config.h 中文注释
  11. python3-day2(基本回顾)
  12. Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
  13. 常见编程语言对REPL支持情况小结[转]
  14. python中strip函数的用法
  15. struts升级2.3.12到2.5.13
  16. solrj管理索引库
  17. Python常见字符编码间的转换
  18. jQuery+存储过程实现无刷新分页(九)
  19. Python图形编程探索系列-02-框架设计
  20. 【mpvue】使用Mpvue撸一个简单的小程序

热门文章

  1. Java课程设计---浏览学生(实现根据姓名查询)
  2. LeetCode-008-字符串转换整数 (atoi)
  3. aria2 源码解析专题—— (一)基础架构
  4. SQL从零到迅速精通【实用函数(2)】
  5. MM32F0140 UART1空闲中断接收
  6. egg项目eslint不识别链式操作符的解决方法
  7. 番茄钟的实现(基于Xilinx EGO1学习板)
  8. ybt1130:找第一个只出现一次的字符
  9. 开源版-阿里云人脸搜索M:N,人脸比对1:1
  10. 抖音网页版高清视频抓取教程selenium