Docker + .NET API:简化部署和扩展

简介: Docker + .NET API:简化部署和扩展

年来,Docker 容器彻底改变了开发人员创建、共享和运行应用程序的方式。凭借其灵活的设计,Docker 容器确保了跨各种平台的环境,从而简化了可靠部署应用程序的过程。与 .NET 集成后,开发人员可以利用 Dockers 功能来简化 .NET 应用程序的开发和部署阶段。本文深入探讨了将 Docker 容器与 .NET 应用程序配合使用的优点,并提供了入门指南。

图片由Docker提供

为什么选择 Docker for .NET?

1. 一致的开发环境

       Docker 容器封装了运行应用程序的所有依赖项和配置,从而保证了开发、测试和生产环境之间的一致性。通过利用 Docker,开发人员可以避免“它适用于我的机器”问题的典型陈述,因为他们可以创建跨各种开发团队和设备完美运行的环境。

2. 简化的依赖关系管理

       Docker 消除了在开发人员计算机上手动安装和管理依赖项的需要。通过在 Docker 文件中指定依赖项,开发人员可以毫不费力地将其 .NET 应用程序与库和依赖项捆绑在一起,从而减少设置时间并最大限度地减少兼容性问题。

3. 可扩展性和资源效率

       由于其性质和容器化技术,Docker 非常适合水平或垂直扩展 .NET 应用程序。开发人员能够使用 Docker Swarm 或 Kubernetes 轻松设置其应用程序的实例,这有助于优化资源使用并提高应用程序性能。

4. 简化部署流程

       Docker 简化了 .NET 应用程序的部署。开发人员能够将其应用程序包装到 Docker 映像中。这些可以部署到任何与 Docker 兼容的环境,包括本地服务器、AWS 或 Azure 等云平台,甚至 IOT 设备。这不仅简化了部署过程,还加快了 .NET 应用程序的发布周期

从 Docker 和 .NET 开始

步骤 1:安装 Docker

       通过导航到 Docker 桌面,安装 Docker 很容易。Docker 桌面适用于 Windows、Mac 和 Linux。我已经下载并安装了适用于 Windows 的它。安装后,Docker (whale) 图标将显示在系统侧托盘上,如下所示。当您单击该图标时,它将打开 Docker 桌面仪表板,如下所示。您可以查看容器、映像、卷、内部版本和扩展的列表。在下图中,它显示了我在本地计算机上创建的容器列表。 image.png

image.png

步骤 2:创建 .NET 应用程序

       使用所选工具(如 Visual Studio、Visual Studio Code 或 the.NET CLI)创建 .NET 应用程序。例如,您可以直接从命令行使用以下命令。

PowerShell的

dotnet new web -n MinimalApiDemo

步骤 3:使用 Docker 设置应用程序

       在 .NET 项目的根文件夹中创建一个 Dockerfile,以指定应用程序的 Docker 映像。下面是在上一步中创建的 ASP.NET Core 应用程序的 Dockerfile 示例。

Dockerfile
# Use the official ASP.NET Core runtime as a base image
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 8080
# Use the official SDK image to build the application
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MinimalApiDemo.csproj", "./"]
RUN dotnet restore "MinimalApiDemo.csproj"
COPY . .
WORKDIR "/src/"
RUN dotnet build "MinimalApiDemo.csproj" -c Release -o /app/build
# Publish the application
FROM build AS publish
RUN dotnet publish "MinimalApiDemo.csproj" -c Release -o /app/publish
# Final image with only the published application
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MinimalApiDemo.dll"]

步骤 4:创建并启动 Docker 映像

       通过从终端窗口执行命令(使用小写字母)来创建 Docker 映像。

PowerShell的

docker build -t minimalapidemo .

   完成构造过程后,即可通过在容器中运行 Docker 映像来启动它。运行以下 docker 命令以启动新容器。

PowerShell的

docker run -d -p 8080:8080 --name myminimalapidemo minimalapidemo

image.png

       您的 API 服务当前在 Docker 容器中运行,可以通过此 localhost 访问,如下所示。

image.png

请参阅我之前的文章,了解我如何使用具有不同 HTTP 端点的最小 API 创建产品控制器。

下面是一些建议的 .NET 应用程序 docker 化策略

1.减小图像尺寸

       通过利用阶段构建、消除依赖关系并最小化 Docker 文件中的层来提高 Docker 映像的效率。

2.利用.dockerignore文件

       生成一个 .dockerignore 文件,以排除文件和目录传输到 Docker 镜像中,从而减小镜像大小并提高构建速度。

3. 确保容器安全

       在Docker容器创建和运行过程中,请遵循安全措施,包括更新基础镜像、进行漏洞扫描和限制容器权限。

4. 将 Docker Compose 用于多容器应用程序

       对于具有服务或依赖项的应用程序,利用 Docker Compose 定义和管理多容器应用程序,从而简化开发和部署过程。

5. 监控容器并排除故障

       使用 Docker 自己的监控工具或第三方解决方案监控 Docker 容器的性能和运行状况。利用 Docker 日志和调试实用程序等工具及时解决问题并提高容器的效率

       Docker 容器为 .NET 应用程序的开发、打包和部署提供了一个高效的平台。通过容器化这些应用程序,开发人员可以创建开发环境、简化依赖项管理并简化部署过程。无论重点是微服务、Web 应用还是 API,Docker 都提供了一种在各种环境中操作 .NET 应用程序的熟练方法。通过遵循最佳实践并最大限度地发挥 Docker 的功能,开发人员可以充分利用容器化的优势,从而加快构建和部署 .NET 应用程序的过程


目录
相关文章
|
1月前
|
运维 网络安全 持续交付
IDEA+Docker 远程一键部署项目:技术干货分享
【10月更文挑战第4天】在现代软件开发中,快速、可靠、自动化的部署流程是提升开发效率和运维质量的关键。IDEA(IntelliJ IDEA)作为Java开发者首选的IDE,结合Docker这一轻量级容器化技术,能够实现远程一键部署项目,极大地简化了开发到生产的流程。今天,我将和大家分享这一组合在工作学习中的实际应用和技术干货。
216 3
|
6天前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
54 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
17天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
56 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
7天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
7天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
7天前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
17 1
|
1月前
|
Web App开发 前端开发 测试技术
【Docker项目实战】使用docker部署tabler后台模版
【10月更文挑战第10天】使用docker部署tabler后台模版
35 1
【Docker项目实战】使用docker部署tabler后台模版
|
1月前
|
JSON JavaScript 测试技术
【Docker项目实战】使用Docker部署PPTist在线演示文稿应用
【10月更文挑战第9天】使用Docker部署PPTist在线演示文稿应用
36 1
【Docker项目实战】使用Docker部署PPTist在线演示文稿应用
|
1月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
83 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
1月前
|
存储 前端开发 测试技术
【Docker项目实战】使用Docker部署Calcium网页计算器
【10月更文挑战第7天】使用Docker部署Calcium网页计算器
30 1
【Docker项目实战】使用Docker部署Calcium网页计算器