gpt4 book ai didi

docker - 使用 VSTS 构建的 .NET Core 容器无法在 Linux 上运行

转载 作者:行者123 更新时间:2023-12-02 19:08:41 25 4
gpt4 key购买 nike

我正在使用 Visual Studio Team Services 构建一个带有 aspnetcore 的 .NET Core 容器。图片。如果我在 Linux 机器上从源代码构建镜像,我可以运行它并 curl localhost效果很好。

但是,在 VSTS 中运行相同的代码,构建相同的图像,会产生不同的结果。我正在使用“Hosted Linux Preview”来构建图像,它可以工作。 CI 构建成功并将图像上传到我的私有(private) Azure 注册表。当我在上面提到的同一台 Linux 机器上运行该镜像时,它会立即退出,并在日志中显示以下错误:
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:...
这是 Dockerfile:

FROM microsoft/aspnetcore:1.1
WORKDIR /app
COPY published .
ENV ASPNETCORE_URLS http://+:80
EXPOSE 80
ENTRYPOINT ["dotnet", "ContainerPOC.dll"]

最佳答案

该错误是由 VSTS 上的 dotnet Publish 任务中的错误引起的。配置此命令时:
dotnet publish --output publish
这是执行的:
dotnet publish --output publish/s
附加的/s导致输出转到发布文件夹中名为“s”的子文件夹。我更改了 Dockerfile 以反射(reflect)这个位置(COPY 指令),一切都很好。

错误是可重现的:

  • 注释掉 ENTRYPOINT指令
  • 构建镜像
  • 从镜像运行容器并执行交互式 bash shell
  • 执行dotnet命令并指定工作目录中不存在的程序集名称
  • Did you mean..?会出现错误。鉴于这种情况,这不是一个非常描述性的错误。

    关于docker - 使用 VSTS 构建的 .NET Core 容器无法在 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44459120/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com