zoukankan      html  css  js  c++  java
  • Windows系统下 ASP.NET Core 的 Docker 映像创建

    本教程演示如何在 Docker 容器中运行 ASP.NET Core 应用

    具体步骤参考文末官方文档:ASP.NET Core 的 Docker 映像,本文只记录我发布过程中遇到的一些问题。

    系统要求

      1.操作系统:我的是Windows10(家庭版),这里需要升级到windows10专业版,或者企业版。升级后重启电脑。

      单击 我的电脑,右键【属性】,可以看到如下界面。点击更改秘钥升级。

      

      2.下载安装 Docker For Desktop,下载地址:https://www.runoob.com/docker/windows-docker-install.html

       主要是开启电脑的Hyper-V功能。然后点击安装docker for desktop 安装包。查看电脑是否已开启虚拟化,可在任务管理器中查看,选择【性能】选项卡,在右下角【虚拟化】中查看。具体如下图。

     3. 运行系统安装开发必要软件和aspnet core sdk 、aspnet runtime 运行时捆绑包。 

         下载安装网址 :Build apps - SDK 和  Run apps - Runtime 

      参考文档:ASP.NET Core 入门   https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?view=aspnetcore-3.1&tabs=windows

    下载示例应用

         下载地址: https://github.com/dotnet/dotnet-docker 。可以用git下,也可以直接下载个压缩包。

    本地运行应用

    • 导航到下载文档中以下文件夹目录: dotnet-docker/samples/aspnetapp/aspnetapp 。

    • 运行以下命令以本地生成并运行应用(在命令行cmd中运行,或者Windows Powershell命令行运行以下命令):  

    • dotnet run 
    • 在浏览器中转到 http://localhost:5000 以测试应用。

    • 在命令提示符处按 Ctrl+C 以停止应用。

    在 Linux 容器中运行

    • 在 Docker 客户端中,切换到 Linux 容器。

    • 导航到 dotnet-docker/samples/aspnetapp 下的 Dockerfile 文件夹。

    • 运行以下命令以在 Docker 中生成并运行示例:

      docker build -t aspnetapp .
      docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
      
      build 命令参数:
      • 将映像命名为 aspnetapp。
      • 在当前文件夹(末尾的句点)中查找 Dockerfile。

      运行命令参数:

      • 分配伪 TTY,即使未附加也使其保持打开状态。 (与 --interactive --tty 的效果相同。)
      • 容器在退出时自动删除。
      • 将本地计算机上的端口 5000 映射到容器中的端口 80。
      • 将容器命名为 aspnetcore_sample。
      • 指定 aspnetapp 映像。
    • 在浏览器中转到 http://localhost:5000 以测试应用。

    在 Windows 容器中运行

    • 在 Docker 客户端中,切换到 Windows 容器。

    导航到 dotnet-docker/samples/aspnetapp 下的 docker 文件文件夹。

    • 运行以下命令以在 Docker 中生成并运行示例:

    • docker build -t aspnetapp .
      docker run -it --rm --name aspnetcore_sample aspnetapp 
    • 对于 Windows 容器,你需要容器的 IP 地址(浏览到 http://localhost:5000 不起作用):

      • 打开另一个命令提示符。

      • 运行 docker ps 以查看正在运行的容器。 验证其中是否包含“aspnetcore_sample”容器。

      • 运行 docker exec aspnetcore_sample ipconfig 以显示容器的 IP 地址。 该命令的输出如以下示例所示:

        Ethernet adapter Ethernet:
        
           Connection-specific DNS Suffix  . : contoso.com
           Link-local IPv6 Address . . . . . : fe80::1967:6598:124:cfa3%4
           IPv4 Address. . . . . . . . . . . : 172.29.245.43
           Subnet Mask . . . . . . . . . . . : 255.255.240.0
           Default Gateway . . . . . . . . . : 172.29.240.1
        
    • 将容器 IPv4 地址(例如,172.29.245.43)复制并粘贴到浏览器地址栏以测试应用。

    手动生成和部署

     参考官方文档吧:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-3.1#download-the-sample-app

    这里记录一下我遇到的问题:

    Unable to load the service index for source https://api.nuget.org/v3/index.json

    具体原因是:docker builder和 run aspnet core 项目时应该使用不同的sdk包。 而我  build 和  runtime 都使用了相同的 mcr.microsoft.com/dotnet/core/sdk:3.0 。

     其他运行时镜像可以在以下网址的链接中打开:https://github.com/dotnet/dotnet-docker 链接,在ReadME.md文件中查看。这是微软官方提供的sdk和runtime镜像包。

    Featured Repos

    这里aspnet core 3.0 应用 发布到docker 基本完成。 

    本文参考微软官方文档:

    1.ASP.NET Core 入门  

    2.Docker:ASP.NET Core 的 Docker 映像

    3.下载 ASP.NET SDK和 ASP.NET CORE Runtime

    4.示例 asp.net core 代码

     5. 园子参考文章:NET Core微服务之ASP.NET Core on Docker

    ASP.NET Core 的 Docker 映像

  • 相关阅读:
    leetcode Remove Linked List Elements
    leetcode Word Pattern
    leetcode Isomorphic Strings
    leetcode Valid Parentheses
    leetcode Remove Nth Node From End of List
    leetcode Contains Duplicate II
    leetcode Rectangle Area
    leetcode Length of Last Word
    leetcode Valid Sudoku
    leetcode Reverse Bits
  • 原文地址:https://www.cnblogs.com/davies/p/12112558.html
Copyright © 2011-2022 走看看