加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

.net – dotnet aspnetcore docker build失败,出现145错误代码

发布时间:2020-12-16 03:29:34 所属栏目:安全 来源:网络整理
导读:我用this tutorial创建了我的第一个docker webapi项目. 我正在使用Windows 7(docker toolbox). 这就是我跑的: dotnet new webapi 这是Dockerfile: FROM microsoft/dotnet:latestCOPY . /appWORKDIR /appRUN ["dotnet","restore"]RUN ["dotnet","build"]EXP

我用this tutorial创建了我的第一个docker webapi项目.

我正在使用Windows 7(docker toolbox).

这就是我跑的:

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

我的服务成功运行为docker容器.

然后,我尝试更改Dockerfile以处理aspnetcore基本映像:

从microsoft / dotnet:最新更改为FROM microsoft / aspnetcore:1.0.1

新的Dockerfile看起来像:

FROM microsoft/aspnetcore:1.0.1
COPY . /app
WORKDIR /app

RUN ["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","build"]

这意味着dotnet还原和dotnet构建命令正在您正在使用的映像中运行.由于您使用的图像没有安装SDK,因此无法找到这些命令,并且会在您看到时失败.我上面链接的存储库中的图像中安装了SDK,因此可以找到并执行dotnet restore和dotnet build命令.

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

FROM microsoft/aspnetcore:1.0.1
WORKDIR /app
COPY ./app .
ENTRYPOINT ["dotnet","TheNameOfYourProject.dll"]

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读