基于 aspnetcore:2.0 的映像不会 运行 在 AKS 节点上?

aspnetcore:2.0 based image won't run on AKS nodes?

我有一个 asp.net 核心 2.0 应用程序,其 docker 映像在本地运行良好,但当将该映像部署到 AKS 群集时,pods 的状态为 CrashLoopBackOff 并且 pod 日志显示:

Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409.

而且由于您无法通过 ssh 连接到 AKS 群集,因此很难弄清楚这一点?

Dockerfile:

FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY . .
EXPOSE 80
ENTRYPOINT ["dotnet", "myapi.dll"]

事实证明,我们的构建系统并没有像我们想象的那样将应用程序代码放入容器中。由于容器不可运行,我不知道如何检查它的内容,直到我找到这个命令,它是这些情况的救命稻草:

docker run --rm -it --entrypoint=/bin/bash [image_id]

...此时,您可以自由inspect/verify容器中的内容。

我只是 运行 遇到了同样的问题,这是因为我遗漏了一个关键的拼图。

docker-compose -f docker-compose.ci.build.yml run ci-build

VS2017 Docker 工具将创建该 docker-compose.ci.build.yml 文件。在该命令是 运行 之后,publish 文件夹被填充并且 docker build -t <tag> 将构建一个填充图像(没有空的 /app 文件夹)。