dotnet aspnetcore docker构建失败并显示145错误代码

我已使用本教程创建了我的第一个docker webapi项目。

我正在使用Windows 7(Docker工具箱)。

这是我跑过的:

dotnet new webapi

这是Dockerfile:

FROM microsoft/dotnet:latest

COPY . /app

WORKDIR /app

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

ENV ASPNETCORE_URLS http://*:5000

ENTRYPOINT ["dotnet", "run"]

这是我创建图像的方式:

docker build -t mydemos:aspnetcorehelloworld .

这就是我创建和运行容器的方式:

docker run -d -p 8080:5000 -t mydemos:aspnetcorehelloworld

然后,我尝试更改Dockerfile以在aspnetcore基本映像上工作:

FROM microsoft/dotnet:latest 改为 FROM microsoft/aspnetcore:1.0.1

新的Dockerfile如下所示:

FROM microsoft/aspnetcore:1.0.1

COPY . /app

WORKDIR /app

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

ENV ASPNETCORE_URLS http://*:5000

ENTRYPOINT ["dotnet", "run"]

现在,我尝试使用

docker build -t mydemos:aspnetcorehelloworld1 .

我得到一个错误。

这是构建日志:

Sending build context to Docker daemon 636.9 kB

Step 1/8 : FROM microsoft/aspnetcore:1.0.1

---> 2c7bbc508bb2

Step 2/8 : COPY . /app

---> Using cache

---> 1d5b9bd908b3

Step 3/8 : WORKDIR /app

---> Using cache

---> c1d5d091d111

Step 4/8 : RUN dotnet restore

---> Running in 8399e21caeb2

Did you mean to run dotnet SDK commands? Please install dotnet SDK from:

http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

The command 'dotnet restore' returned a non-zero code: 145

我进入了网址,重新安装了东西,但仍然出现错误。

我试图在同一命令行会话中使用dotnet cli命令,但我成功了(dotnet restore可行)。

我曾尝试搜索此错误,但实际上找不到任何解决方案。

我在这里想念什么?我在多个场合和测试中都遇到了145错误。

回答:

您使用的映像仅包含.NET Core运行时,而不包含SDK。尝试来自以下存储库的基本映像:

https://hub.docker.com/r/microsoft/aspnetcore-

build/


您的Dockerfile中包含以下几行:

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

这意味着dotnet restoreand dotnet

build命令正在您使用的映像中运行。由于您使用的映像未安装SDK,因此您找不到这些命令,这些命令将失败。我在上面链接的存储库中的映像已在其中安装了SDK,因此可以找到和执行dotnet

restoredotnet build命令。

使用安装了SDK的基本映像的替代方法是在开发计算机上执行构建/发布过程,然后将发布的输出复制到映像中。然后,您的Dockerfile只需要看起来类似以下内容:

FROM microsoft/aspnetcore:1.0.1

WORKDIR /app

COPY ./app .

ENTRYPOINT ["dotnet", "TheNameOfYourProject.dll"]

请注意,现在dotnet在映像中运行的命令只是运行您(预构建的)DLL的命令。这仅需要运行时,而不需要SDK。

以上是 dotnet aspnetcore docker构建失败并显示145错误代码 的全部内容, 来源链接: utcz.com/qa/416004.html

回到顶部