【问题标题】:Create an image containing .net core sdk and install custom templates inside the image创建一个包含 .net core sdk 的镜像并在镜像中安装自定义模板
【发布时间】:2021-12-12 18:08:07
【问题描述】:

我正在使用 Visual Studio 控制台应用程序创建一个 docker 映像,并且 dockerfile 看起来像:

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS base
RUN dotnet new --install MyCustomTemplate::1.0.0
WORKDIR /app
    
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["DockerTemplates/DockerTemplates.csproj", "DockerTemplates/"]
RUN dotnet restore "DockerTemplates/DockerTemplates.csproj"
COPY . .
WORKDIR "/src/DockerTemplates"
RUN dotnet build "DockerTemplates.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DockerTemplates.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerTemplates.dll"]

从 sdk 创建镜像后,我调用了命令以使用以下命令安装自定义模板:

RUN dotnet new --install MyCustomTemplate::1.0.0

但是当创建镜像时,我在我的 docker 镜像中找不到我的自定义模板。

如何在创建图像期间在图像中安装自定义模板?有人可以帮忙吗?

谢谢

【问题讨论】:

  • 您能提供更多信息吗?您将“RUN”命令放在哪里?您是创建了新的 Dockerfile 还是修改了现有的 Dockerfile?您的命令在定义的 WORKDIR 中执行。你选择了正确的WORKDIR还是cd /my_install_dir && dotnet new ...
  • 从 mcr.microsoft.com/dotnet/sdk:5.0 创建一个新的 dockerfile 并从 nuget 源安装 dotnet 模板
  • 你怎么看模板不存在?当我尝试复制您的问题时,模板已安装在映像中。我看不出安装它们的目的,但它们就在那里。
  • 我也可以看到标准模板,但是没有安装新的自定义模板。
  • 你怎么看没有安装?

标签: docker .net-core dockerfile dotnet-new


【解决方案1】:

我尝试复制但不能。

Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:5.0
RUN dotnet new --install Amazon.Lambda.Templates::5.5.0

命令

docker build -t test .
docker run --rm test dotnet new --list

列出标准模板 + 新模板

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多