我使用Visual Studio 2017创建了一个ASP.NET核心解决方案,在创建时添加了docker支持。项目中的docker文件是:
FROM microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "AspNetCoreInDocker.dll"]
当我运行项目时,它构建正常,但后来我收到错误:
在调试输出中我有:
realpath(): Invalid argument
The specified framework 'Microsoft.NETCore.App', version '1.1.2' was not found.
- Check application dependencies and target a framework version installed at: /usr/share/dotnet/shared/Microsoft.NETCore.App
- The following versions are installed:
1.1.1
- Alternatively, install the framework version '1.1.2'.
The program '' has exited with code 131 (0x83).
我感谢解决方案是"安装1.1.2"但这不是我的问题。如果我更改docker文件的第一行以使用:latest
标记:
FROM microsoft/aspnetcore:latest
然后它构建并运行良好。
在microsoft/aspnetcore的泊坞窗中心页面上,这两个代码都指向同一位置:https://github.com/aspnet/aspnet-docker/blob/master/1.1/jessie/runtime/Dockerfile
我希望两个标签都失败。为什么:1.1
会失败而:latest
会运行?
答案 0 :(得分:0)
使用
检查容器中dotnet的版本AppKernel
答案 1 :(得分:0)
我的猜测是docker缓存。您指定了1.1,当您第一次构建图像时,意味着1.1.1。现在,当在Dockerfile中指定1.1时,docker总是从缓存中给你1.1.1。