.NET如何创建Dockerfile文件构建镜像?

创建一个WebApi项目,并且创建一个Dockerfile空文件,添加以下代码,7.0代表的你项目使用的SDK的版本,构建的时候也需要选择好指定的镜像tag
  1. FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
  2. WORKDIR /app
  3. EXPOSE 80
  4. EXPOSE 443
  5. FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
  6. ARG BUILD_CONFIGURATION=Release
  7. WORKDIR /src
  8. COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
  9. RUN dotnet restore "./WebApplication1/./WebApplication1.csproj"
  10. COPY . .
  11. WORKDIR "/src/WebApplication1"
  12. RUN dotnet build "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/build
  13. FROM build AS publish
  14. ARG BUILD_CONFIGURATION=Release
  15. RUN dotnet publish "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
  16. FROM base AS final
  17. WORKDIR /app
  18. COPY --from=publish /app/publish .
  19. ENTRYPOINT ["dotnet", "WebApplication1.dll"]
我们一步一步来进行讲解,首先第一步,FROM指定了一个mcr.microsoft.com/dotnet/aspnet:7.0镜像,并且AS别名base,这一步是选择aspnet:7.0作为基础运行镜像,as别名用于方便以下步骤使用。
  1. FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
  2. WORKDIR /app
  3. EXPOSE 80
  4. EXPOSE 443
然后下一步,在这里FROM了一个mcr.microsoft.com/dotnet/sdk:7.0 的镜像并且AS别名build,这个镜像当中是使用到了.NET SDK作为镜像用于将项目构建成部署文件,在这里的COPY的目录的位置是从你docker build ./ 的这个./的目录作为根目录的,请注意如果出现文件未找到的情况下可能就是工作目录与Dockerfile目录不一致导致,在构建的时候指定了构建完成到/app/build目录中。
  1. FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
  2. ARG BUILD_CONFIGURATION=Release
  3. WORKDIR /src
  4. COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
  5. RUN dotnet restore "./WebApplication1/./WebApplication1.csproj"
  6. COPY . .
  7. WORKDIR "/src/WebApplication1"
  8. RUN dotnet build "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/build
在这里FROM了上面的build然后继续AS别名了publish在这里使用了dotnet publish将源码进行了构建部署,上面的build操作是为了将编译过程和构建镜像的过程分离。
  1. FROM build AS publish
  2. ARG BUILD_CONFIGURATION=Release
  3. RUN dotnet publish "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
这里使用到了最开始的base然后别名final,然后指定工作目录,使用COPY --from指定了上面的publish的构建镜像,然后将镜像构建的/app/publish中目录下面的所有的文件COPY到/app下,然后给镜像配置容器启动时运行的命令,则是我们的.NET Core项目启动命令,执行我们的项目。
  1. FROM base AS final
  2. WORKDIR /app
  3. COPY --from=publish /app/publish .
  4. ENTRYPOINT ["dotnet", "WebApplication1.dll"]

 

 

出处:https://www.duidaima.com/Group/Topic/ASP.NET/18770

posted on   jack_Meng  阅读(99)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
历史上的今天:
2022-01-10 《三字经》全文带拼音
2019-01-10 使用dynamic和MEF实现轻量级的AOP组件 ---- 系列文章
2019-01-10 【.Net平台下插件开发】-MEF与MAF初步调研
2019-01-10 使用Managed Extensibility Framework方便的扩展应用程序
2019-01-10 SVN提交强制输入日志信息
2019-01-10 AspNetCore+Swagger 生成Model描述
2019-01-10 AspNet Core Api Restful +Swagger 发布IIS

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩