You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建含.NET Core SDK的Docker镜像时自定义模板安装失败如何解决

解决方案

问题根源

该问题有两种常见触发场景:

  • dotnet默认将dotnet new --install安装的模板存储在当前用户的家目录下(Linux路径为~/.templateengine),属于用户级资源,切换用户后无法读取
  • 你当前Dockerfile中的build阶段是独立拉取的干净.NET SDK镜像,没有继承安装了模板的base阶段,如果是构建流程中需要用到模板,build阶段自然找不到对应模板

对应解决方法

场景1:模板需要在容器运行时使用

选择以下任意一种方案即可:

  • 全局安装模板,所有用户都可访问:将base阶段的安装命令修改为:
    RUN dotnet new --install MyCustomTemplate::1.0.0 --global
    
  • 统一安装模板和容器运行时的用户:微软官方.NET SDK镜像内置了app普通用户,切换到该用户后再安装模板即可:
    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS base
    # 切换到和运行时一致的app用户
    USER app
    RUN dotnet new --install MyCustomTemplate::1.0.0
    WORKDIR /app
    

场景2:模板需要在构建流程(build/publish阶段)使用

将build阶段的基础镜像改为已经安装了模板的base阶段即可,修改后的build阶段开头如下:

# 不再独立拉取SDK,继承base阶段复用已安装的模板
FROM base AS build
WORKDIR /src
COPY ["DockerTemplates/DockerTemplates.csproj", "DockerTemplates/"]
# 后续原有构建逻辑保持不变

内容的提问来源于stack exchange,提问作者Satyajit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:06:04