1。背景
我目前正在研究以下构建/部署管道:
特拉维斯构建 ( https://travis-ci.org/devedse/DeveMazeGeneratorCore/jobs/196910720 )
- dotnet 恢复
- dotnet 构建
- dotnet 发布
- docker 创建镜像
- docker 将镜像发布到 hub
- Docker 镜像中心 ( https://hub.docker.com/r/devedse/devemazegeneratorcore/ )
- 使用 Linux 上的 Azure Web App 执行部署 ( http://devemazegeneratorcoredocker.azurewebsites.net/api/mazes/MazePath/512/512 )
2。问题
每当我将某些内容推送到 Github 存储库时,就会启动构建并且正确执行步骤 1-3。 但是Azure上的网站无法访问。
我使用 SCM 浏览到调试控制台(https://devemazegeneratorcoredocker.scm.azurewebsites.net/DebugConsole/Default.cshtml(以供将来引用))并执行以下命令来查找 Docker 生成的日志文件:
然后使用以下命令来读取它们:
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"
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/