c# - 在 Linux 上的 Azure Web App 中运行 dotnet core docker 镜像时,找不到与命令 "dotnet-/../.dll"匹配的可执行文件

标签 c# azure docker travis-ci .net-core

1。背景

我目前正在研究以下构建/部署管道:

  1. Github ( https://github.com/devedse/DeveMazeGeneratorCore )

  2. 特拉维斯构建 ( https://travis-ci.org/devedse/DeveMazeGeneratorCore/jobs/196910720 )

    • dotnet 恢复
    • dotnet 构建
    • dotnet 发布
    • docker 创建镜像
    • docker 将镜像发布到 hub
  3. Docker 镜像中心 ( https://hub.docker.com/r/devedse/devemazegeneratorcore/ )
  4. 使用 Linux 上的 Azure Web App 执行部署 ( http://devemazegeneratorcoredocker.azurewebsites.net/api/mazes/MazePath/512/512 )
    • Docker on Azure .

2。问题

每当我将某些内容推送到 Github 存储库时,就会启动构建并且正确执行步骤 1-3。 但是Azure上的网站无法访问。

我使用 SCM 浏览到调试控制台(https://devemazegeneratorcoredocker.scm.azurewebsites.net/DebugConsole/Default.cshtml(以供将来引用))并执行以下命令来查找 Docker 生成的日志文件:

Commands KUDU

然后使用以下命令来读取它们:

cat docker_128_err.log
cat docker_128_out.log

输出日志显示以下结果(看起来正确):

Login Succeeded
latest: Pulling from devedse/devemazegeneratorcore
5040bd298390: Already exists
fce5728aad85: Already exists
76610ec20bf5: Already exists
51ee4768b31d: Already exists
4dc55ff439a1: Already exists
9cb727c7d7a0: Already exists
2bea08464ad0: Pulling fs layer
2bea08464ad0: Verifying Checksum
2bea08464ad0: Download complete
2bea08464ad0: Pull complete
Digest: sha256:647f3db3daa3330b7eb109a1c604e5bd403c2c7089b3c18c5e9249a9805d3a4d
Status: Downloaded newer image for devedse/devemazegeneratorcore:latest
Login Succeeded
latest: Pulling from devedse/devemazegeneratorcore
Digest: sha256:647f3db3daa3330b7eb109a1c604e5bd403c2c7089b3c18c5e9249a9805d3a4d
Status: Image is up to date for devedse/devemazegeneratorcore:latest

但是,错误日志显示以下错误:

2017-01-31T13:11:46.757760723Z No executable found matching command "dotnet-/home/DeveMazeGeneratorCoreWebPublish/DeveMazeGeneratorWeb.dll"

奇怪的是,每当我在本地运行图像时,一切都正常: Dockerlocal

docker run -it --rm -p 0.0.0.0:5001:80 devedse/devemazegeneratorcore:latest

与我的本地 Docker 安装相比,在 Azure 中的 Linux 计算机上运行 Docker 镜像似乎存在差异,后者在安装 Docker for Windows 时安装的默认 VM 上运行 Docker 镜像。

3。使用的配置文件:

.travis.yml: ( https://github.com/devedse/DeveMazeGeneratorCore/blob/master/.travis.yml ) Dockerfile: ( https://github.com/devedse/DeveMazeGeneratorCore/blob/master/Scripts/Docker/Dockerfile )

4。摘要

总而言之,在 Azure 上运行 Docker 的执行方式似乎与在本地执行此操作时不同。有谁知道这可能是什么/如何解决它?

再次,(仅供引用),错误:

2017-01-31T13:11:46.757760723Z No executable found matching command "dotnet-/home/DeveMazeGeneratorCoreWebPublish/DeveMazeGeneratorWeb.dll"

最佳答案

修改您的镜像,将您的应用程序位放置在/home 以外的位置。

/home 是 Linux 上的 Azure 应用服务绑定(bind)挂载持久站点卷的位置,该卷是跨实例共享的磁盘,并在重新启动之间保留。

您不必使用它(运行您自己的镜像时可能没有任何用处),但镜像的/home 中的任何内容都会在运行时消失。

关于c# - 在 Linux 上的 Azure Web App 中运行 dotnet core docker 镜像时,找不到与命令 "dotnet-/../.dll"匹配的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958888/

相关文章:

c# - 为桌面应用程序存储数据

c# - 如何在 winform 中打上绿色勾号或红色叉号?

c# - Prism MVVM ViewModel属性支持字段作为模型的属性

azure - 如何在新门户中捕获Azure虚拟机的图像?

azure - Azure DocumentDB (CosmosDB) .Net SDK 中的位置

docker - 网络插件未准备好 : cni config uninitialized

docker - 在 ubuntu 容器中运行 docker

c# - 为什么数组项分配会降低 C# 程序的性能?

c# - 响应已开始 Blazor 中的 HttpContext.SignOutAsync() 方法调用引发异常

docker - 在 Docker 容器中安装 node_modules 并与主机同步