dotnet aspnetcore docker生成失败,错误代码为145
我已经使用这个教程来创build我的第一个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"]
这是我如何创build图像:
docker build -t mydemos:aspnetcorehelloworld .
这就是我创build和运行容器的方式:
docker run -d -p 8080:5000 -t mydemos:aspnetcorehelloworld
我的服务作为docker容器成功运行。
然后,我尝试更改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"]
现在,我试图使用新build图像
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
我进入url,重新安装的东西,我仍然得到一个错误。
我试图在同一个命令行会话中使用dotnet cli命令,并成功( dotnet restore
工作)。
我试图search这个错误,但无法find任何解决scheme。
我在这里错过了什么? 我在多次场合和testing中得到这个145错误。
您使用的图像仅包含.NET Core运行时,而不包含SDK。 尝试从以下存储库中获取基本映像:
https://hub.docker.com/r/microsoft/aspnetcore-build/
你的Dockerfile中有以下几行:
RUN ["dotnet", "restore"] RUN ["dotnet", "build"]
这意味着dotnet restore
和dotnet build
命令正在您使用的图像中运行。 由于您正在使用的图像没有安装SDK,所以无法find这些命令,并且看起来失败。 上面链接的存储库中的图像中安装了SDK,因此可以find并执行dotnet restore
和dotnet build
命令。
使用安装了SDK的基本映像的替代方法是在开发机器上执行构build/发布过程,然后将发布的输出复制到映像中。 你的Dockerfile只需要看下面的内容:
FROM microsoft/aspnetcore:1.0.1 WORKDIR /app COPY ./app . ENTRYPOINT ["dotnet", "TheNameOfYourProject.dll"]
请注意,现在在图像中运行的dotnet
命令只是运行(预先构build的)DLL的命令。 这只需要运行时,而不是SDK。
- 错误:'ascii'编解码器无法解码位置91中的字节0xe2:序号不在范围内(128)
- 在Dotnet docker容器中运行VSCode
- 单声道TLS1.2问题 – btls-cert-sync“命令未find”
- Docker的aspnetcore Heroku – 授予权限
- 如何在使用Dockerfile构build时解决错误“没有这样的文件或目录”错误
- 在Visual Studio中使用docker supper的空项目
- 只是因为一个程序有一个graphics用户界面是否意味着它会崩溃在Windows泊坞窗?
- rabbitmq优雅的出口应该等待事件处理者
- dotnet恢复在本地工作,但在构buildDocker容器时失败