【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件

简介: 【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件

问题描述

在博文(【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务)中我们通过VS 2019可以为项目添加Dockerfile并自动生成Docker Image文件。但是如果不借助于VS2019我们如何来操作呢?

 

解决步骤

准备Dockerfile

进入项目文件夹中,创建Dockerfile并COPY以下内容:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#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/aspnet:5.0 AS base
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
ENV ASPNETCORE_URLS=http://+:8000 
WORKDIR /app
EXPOSE 8000
EXPOSE 5000
COPY . /app/
ENTRYPOINT ["dotnet", "MyLife.Blazor.Server.dll"]
  • FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base  和 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build 可以在Docker Hub中查询到对于的版本镜像(https://hub.docker.com/_/microsoft-dotnet-sdk)
  • COPY . /app/ 即把dockerfile所在的目录中所有文件复制到镜像中app目录中

 

生成镜像

通过CMD进入到当前目录, 使用 docker build -t mywebimages . (特别注意:在命令中必须要点.,黄色高亮的部分替代为自定义的镜像名。详细的命令参考Docker说明:https://docs.docker.com/engine/reference/commandline/build/

当命令运行完成后,在Docker Desktop页面中可以看见当前Images

 

运行镜像,验证项目运行成功

在Docker Desktop中Run当前Image或者通过docker run命令启动Container: docker run --name testweb -p 8080:8000 mywebimages

命令启动输出:

C:\MyCode\MyLife\MyLife.Blazor\MyLife.Blazor\Server\bin\Release\net5.0\publish>docker run --name testapidemo -p 8080:8000 mywebimages

warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]

Storing keys in a directory 'C:\Users\ContainerUser\AppData\Local\ASP.NET\DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.

info: Microsoft.Hosting.Lifetime[0]

Now listening on: http://[::]:8000

info: Microsoft.Hosting.Lifetime[0]

Application started. Press Ctrl+C to shut down.

info: Microsoft.Hosting.Lifetime[0]

Hosting environment: Production

info: Microsoft.Hosting.Lifetime[0]

Content root path: C:\app

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]

Failed to determine the https port for redirect.

 

 

访问Docker Container指定的端口8080结果为:

 

附录:如何Push本地Docker中的镜像到ACR(Azure Container Registry)中?

在Azure Container Registry中,有快速入门的文档(Quick Start),参考里面的步骤即可。只是在登录的时候说明以下。如果使用Access Keys中的用户名和密码。这可以包含在Docker Login命令中。如:

docker login myregistry.azurecr.cn --username 00000000-0000-0000-0000-000000000000 --password eyJhbGciOiJSUzI1NiIs[...]24V7wA

docker tag mywebimages myregistry.azurecr.cn/mywebimages


docker push myregistry.azurecr.cn/mywebimages

详细的步骤见文档:

 

参考资料:

Docker Hub: https://hub.docker.com/_/microsoft-dotnet-sdk

创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务: https://www.cnblogs.com/lulight/p/14315383.html

windows上用VS2019开发的 .NETCore项目如何打包部署到linux Docker中: https://blog.csdn.net/weixin_48000648/article/details/106524426

Push the image to your registry: https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-docker-cli#push-the-image-to-your-registry

相关文章
|
24天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
24天前
|
Docker 容器
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像
|
24天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
53 4
|
1月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
1月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
2月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
2月前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
514 0
|
2月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
2月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
103 0
|
2月前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报