1.背景

我目前正在处理以下构建/部署管道:

  • Github(https://github.com/devedse/DeveMazeGeneratorCore)
  • Travis构建(https://travis-ci.org/devedse/DeveMazeGeneratorCore/jobs/196910720)
  • dotnet恢复
  • dotnet构建
  • dotnet发布
  • docker 创建镜像
  • docker 将图像发布到中心
  • Docker镜像中心(https://hub.docker.com/r/devedse/devemazegeneratorcore/)
  • 在Linux上使用Azure Web App执行部署(http://devemazegeneratorcoredocker.azurewebsites.net/api/mazes/MazePath/512/512)
  • c# - 在Linux上的Azure Web App中运行dotnet核心docker镜像时,找不到与命令 “dotnet-/../.dll”匹配的可执行文件-LMLPHP

  • 2.问题

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

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

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

    然后使用以下命令读取它们:
    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"
    

    奇怪的是,每当我在本地运行镜像时,一切都可以正常工作:
    c# - 在Linux上的Azure Web App中运行dotnet核心docker镜像时,找不到与命令 “dotnet-/../.dll”匹配的可执行文件-LMLPHP
    docker run -it --rm -p 0.0.0.0:5001:80 devedse/devemazegeneratorcore:latest
    

    与我本地的Docker安装相比,在Azure的Linux机器上运行Docker镜像似乎有点不同,我的本地Docker安装在为Windows安装Docker时正在安装的默认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 App Service绑定(bind)安装永久站点卷的位置,该站点卷是跨实例共享的磁盘,并且在两次重新启动之间保持不变。

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

    10-07 18:21