4

尝试在 docker 上运行简单的 webapi 应用程序(部署到 Ubuntu Linux)我在尝试运行容器时遇到奇怪的异常:
无法加载应用程序或执行命令“Microsoft.AspNet.Server.Kestrel”。可用命令:web。

到目前为止我做了什么.. 我已经将我的 aspnet5 解决方案上传到 Linux 机器并运行以发布它: dnu publish --framework dnxcore50 --configuration Release --wwwroot "wwwroot" --wwwroot-out "wwwroot" --iis-命令“网络”

接下来我完成了 docker build 以创建映像,然后尝试使用以下命令运行它: sudo docker run -t -d -p 8000:8000 myimagename

查看 docker 日志,我看到上面显示的异常。

我已经登录到容器中查看文件夹结构,一切看起来都很好。容器中的验证 dnx 和我用来构建解决方案的 dnx 是相同的。

使用最新可用的 microsoft/aspnet 映像 - rc1-update1

有任何想法吗??

4

1 回答 1

1

我能够通过在 ENTRYPOINT 之前在 Dockerfile 中运行以下命令来使其工作:

ADD ./app
#SOLUTION
WORKDIR path_to_your_sources
RUN dnu restore
#########
WORKDIR /app/approot
ENTRYPOINT "./web"

尽管错误消息表明它需要命令“Microsoft.AspNet.Server.Kestrel”

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  }

这会很奇怪,但是为了检查是否是这种情况,我尝试了:

    "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "Microsoft.AspNet.Server.Kestrel": "Microsoft.AspNet.Server.Kestrel"
  }

它没有用。 dnu restore修复它,还不知道与错误消息的关系。

于 2016-02-26T09:24:04.873 回答