问题标签 [azure-web-app-for-containers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
913 浏览

linux - 无法删除共享文件系统中的文件

在今天为容器部署 Linux 应用程序期间,该应用程序开始失败并且从未出现过。调查 Kudu 中的日志,我可以看到应用程序无法运行,因为在安装依赖项期间,程序会在尝试删除文件时崩溃。

尝试手动删除文件,它继续崩溃:

我已经“停止”了该应用程序,但这些文件仍然无法删除。

除了删除和重新创建应用程序之外,我还需要哪些选项才能让应用程序再次运行?

编辑:我尝试rm -rf按照建议使用,但是因为-r-R是相同的选项,所以没有区别:

我无法使用 SSH 选项,因为我使用python:3的是容器(没有 Azure 自定义)。

我曾经(在此应用程序上)尝试使用为 Azure 定制的容器,源代码在此处。该容器所做的只是在应用程序启动期间添加了一个额外的启动 SSH 服务的步骤,因此它似乎不太可能与当前的故障有关。

编辑:我已更新应用程序以使用 jaraco/python-azure 容器(并修复了该容器中的错误)。我能够在短时间内通过 SSH 连接到应用程序容器,我在其中尝试安装lsof,但在该命令完成之前,SSH 连接显示已断开,我怀疑是因为 docker 容器由于无法删除文件而退出。

此后我无法通过 SSH 重新连接,因为我从 webssh 端点收到内部服务器错误:

webssh 中的内部服务器错误

我尝试为容器使用不同的启动文件:init_container.sh bash -c \"sleep 300\",以便在我 ssh 到它时它可能会旋转 5 分钟,但即使我这样做了,我也无法 SSH 到它,我只收到来自 webssh 的 503 错误端点,即使在诊断控制台中,我也可以看到它使用适当的命令启动 docker 映像。

我也尝试将启动文件更新为init_container.sh rm -rf /home/site/wwwroot/libs/*,但使用诊断控制台,我看到应用容器中发生了相同的错误:

我正在失去希望。还有其他选择吗?

编辑:将应用服务计划从 S1 更改为 S2,向服务发出请求(以触发移动),然后将应用切换回 S1 解决了问题,但只是暂时的。当在一周的晚些时候,该服务有新的流量时,它工作了一小会儿,然后又开始因服务不可用而再次失败。检查日志,同样的错误又回来了。在启动期间,应用程序会尝试删除这些文件,但由于这些文件显然正在使用中,因此删除和后续启动步骤都会失败。更糟糕的是,更改应用服务计划,虽然上周似乎纠正了这个问题,但这次似乎不是一个足够的解决方法。此外,调整应用服务计划的大小虽然有效,但也有意想不到的副作用,例如使该服务计划中的其他应用脱机。

我怀疑有关共享文件系统(安装在 /home)的一些实现细节会导致打开的文件被锁定,因此无法被部署过程或另一个实例启动或手动删除。

我很确定我唯一的选择是不对应用程序可能保持打开的任何文件(例如共享库)使用共享文件系统。

编辑:为了尽量减少复制问题,我创建了这个网络应用程序并将其部署在这里。它目前运行良好。我希望在让它闲置一段时间后,它会被刷新,随后的请求会触发它再次运行,它会失败。我会报告它是否有效。

编辑:我在新的 web 应用程序中复制问题没有成功。我尝试让应用程序闲置 24 小时,看看这是否会引发问题。我还尝试过显式降级“newrelic”依赖项(其中包含 .so 共享库之一),并启动和停止 webapp 以再次触发“运行”脚本。但无论我做什么,应用程序都可以正常启动。我现在想我应该擦除并重建失败的生产应用程序,看看问题是否消失。

0 投票
1 回答
142 浏览

node.js - 有什么理由使用 Azure Web Apps 而不是 Azure Web Apps for Containers?

我对 Azure 很陌生,所以为了学习,我在 Azure 中部署了 Node.js 应用程序,既作为 Docker 容器,也作为 Linux 上的 Azure Web 应用程序。由于 Azure Web 应用程序无论如何都是容器,有什么好的理由我应该使用它们而不是我自己的容器,我可以更好地控制它?

我偶然发现的一个问题是,对于 Azure Web 应用程序中的预配置容器,您必须考虑很多事情,其中​​一些在此处进行了描述。如果我改用我自己的 Docker 容器,我不必采取有时需要的额外步骤来让 Node.js 应用程序及其依赖项启动并作为 Azure Web 应用程序运行。

我是否遗漏了什么,或者在我看来,在 Azure 中将我的应用程序部署为 Docker 容器的工作量减少了?

塞巴斯蒂安

0 投票
1 回答
154 浏览

azure - 用于容器 CI 的 Azure Web 应用与 Azure 容器注册表

我在使用 Azure Web App for Containers 时遇到了 Azure Container Registry CI 的问题。看来他们之间的网络钩子坏了。我尝试在 Web 应用程序的 Docker 设置中打开 CI,但是失败了,还尝试从 Azure 容器注册表创建一个 Web 挂钩,但是它说我的容器注册表不受管理,但没有给我升级选项它到一个。

0 投票
1 回答
1446 浏览

azure - Azure Web App for Containers 网络 VNET

我正在探索 Azure,但无法弄清楚如何让我的应用服务连接到我创建的 VNET,以便它可以访问 HDInsight 群集。

我的场景是这样的,我正在运行一个部署在我创建的 VNET 中的 Kafka HDInsight 集群,并且我还需要在同一个 VNET 中部署我的 Azure Web App for Container,以便它可以连接到 Kafka 代理。

我还没有看到关于这方面的好文档,需要有关如何设置 Azure 应用服务以通过专用网络连接到我的 VNET 的帮助?

我的应用服务上的网络被禁用(不知道为什么)。

在此处输入图像描述

谢谢

0 投票
1 回答
225 浏览

azure - 无法将容器注册表部署到容器的 Web 应用程序

我尝试使用 docker 支持(windows 容器)创建测试项目并将其部署到 azure 容器注册表。之后,我尝试了菜单中的“部署到 Web 应用程序”功能,成功部署后,我只能在资源上看到“您的应用程序服务应用程序已启动并正在运行”,我无法从我的应用程序访问我的方法页面。可以用这个做什么?

0 投票
1 回答
893 浏览

linux - SSH 到容器的横向扩展 Azure 应用服务

如何访问运行 Linux 容器的扩展为 N 个实例的 Azure Web 应用程序的特定实例?Portal 允许通过 SSH 连接到现有实例之一,但从不告诉您在哪个实例中。

0 投票
0 回答
478 浏览

azure - 用于容器到本地连接的 Azure Web 应用

目前,我在一个 Azure Web App for Containers App Service 中托管一个 API。此外,我有一个日志数据库托管在无法公开访问的本地服务上。

为了访问本地服务,可以创建混合连接;但是,与仅使用 Web 应用程序相比,使用 Web App for Containers 时无法通过 Azure 门户使用此功能。

是否可以通过编程方式或通过 CLI 创建此混合连接?

还有其他方法可以通过 azure 连接到本地资源吗?

该 API 使用 ASP.NET Core。

我一直在研究 Microsoft.Azure.Relay 包,但我似乎无法通过包提供的示例实际到达我的本地端点。

编辑:

我已经验证我可以使用 Web 应用程序进行混合连接。为此,我下载了混合连接管理器,将其安装在本地网络上,并检查应用程序是否可以在混合连接结束时对端点进行 HTTP 调用。

所有这些都是通过 Azure 门户完成的,方法是进入我的 Web 应用程序,然后导航到网络、配置混合连接并创建混合连接,然后通过混合连接管理器连接到新的混合连接。

我不能为我的 Web App for Containers 做同样的事情,因为网络不是受支持的水龙头(还没有?)。因此,我正在寻找一种通过 CLI 或在源代码中执行此操作的编程方式。

0 投票
1 回答
5856 浏览

docker - 增加 Azure WebApp for Containers 的启动超时

我们在 Azure WebApp for Containers 上的 Docker 中运行 Java Spring Boot 应用程序。单个 B1 实例足以让应用程序运行,但是 Spring Boot 在启动时非常慢,并且可能需要超过 240 秒才能启动应用程序。

结果,Azure WebApp for Containers 在 240 秒后终止了容器,没有给它足够的时间来启动。

有什么办法可以更改默认的 240 秒启动超时?

0 投票
1 回答
1107 浏览

azure - 在 Azure 中将 Kudu 与多实例应用服务一起使用

在 Azure 中,我有一个 Linux Web 应用程序(用于容器)在 2 个实例的应用程序服务计划下运行(在“横向扩展”菜单项下设置)。如果我理解正确,这对应于我的应用程序托管在 Azure 中的两个单独的 VM 实例上。

如果我然后在 Kudu 界面(开发工具-> 高级工具)中使用调试控制台,我实际登录的是什么?它是托管我的 Docker 容器的虚拟机之一吗?如果是这样,为什么没有提示我选择 VM(看到我在计划中配置了 2)?

0 投票
1 回答
2784 浏览

azure - 无法访问在 Azure Web App for Containers 中运行的 docker 映像

我创建了一个 docker 映像并将其添加到 Azure 容器注册表。然后我将其部署到 Web 应用程序,但无法访问该站点。当我浏览到它加载很长时间(几分钟)然后得到一个 503 错误“服务不可用。

我认为这可能是一个端口问题,因为我的 docker 文件有:

并在应用程序设置中添加了以下键/值对WEBSITES_PORT::15973但仍然没有返回任何内容。

我以为我会回到基础并使用容器 ( appsvc/sample-hello-world:latest) 中的 web 应用程序的快速入门,但同样如此,实际上无法启动应用程序。

可能是什么问题?是否应该像将其指向图像以启动和运行网站一样简单?是否有另一个公共模板可以用作基本图像来查看容器运行?


更新

所以我尝试按照@Charles 的建议在本地运行图像。当它启动时,它肯定会像我不传递环境变量(例如连接字符串)一样运行,然后我会收到相关的错误消息。

本地运行的问题是它启动后我不确定它是如何暴露的。我试过http://localhost:15973http://localhost:44369http://localhost/并尝试传递-p 8080:80然后http://localhost:8080但他们没有响应。

启动图像的响应是:

托管环境:生产

内容根路径:/app

现在收听:http://[::]:80

我认为这也是它在 Azure 中托管的问题,请求没有被路由到图像。

我需要做什么才能调用图像中的api?