未执行 Azure 启动脚本

Azure startup script is not executed

我学会了how to deploy .sh scripts to Azure with Azure CLI。但是我好像不太了解它们是如何工作的。

我正在创建一个脚本,它只是在 Azure Web 应用程序的当前目录中取消存档 .tgz 存档,然后将其删除。很简单:

New-Item ./startup.sh
Set-Content ./startup.sh '#!/bin/sh'
Add-Content ./startup.sh 'tar zxvf archive.tgz; rm-rf ./archive.tgz'

然后我像这样部署脚本:

az webapp deploy --resource-group Group 
                 --name Name
                 --src-path ./startup.sh 
                 --target-path /home/site/wwwroot/startup.sh
                 --type=startup

据说,它应该出现在 /home/site/wwwroot/ 中,但由于某种原因它从未出现。不管我怎么努力。我以为它只是被执行然后自动删除(因为我将它指定为 startup 脚本),但存档在那里,根本没有取消存档。

我的堆栈是 .NET Core。

我做错了什么,做我需要做的事情的正确方法是什么?谢谢。

我不知道这是否有意义,但我认为问题可能在于您使用的是 target-path 参数,而您应该使用 path

来自 documentation you cited,在描述 Azure CLI 功能时,他们指出:

The CLI command uses the Kudu publish API to deploy the package and can be fully customized.

Kudu publish API reference 表示,当描述类型的不同值时,尤其是 startup:

type=startup: Deploy a script that App Service automatically uses as the startup script for your app. By default, the script is deployed to D:\home\site\scripts\<name-of-source> for Windows and home/site/wwwroot/startup.sh for Linux. The target path can be specified with path.

注意path的使用:

The absolute path to deploy the artifact to. For example, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh".

我从未测试过,我知道在考虑 az webapp deploy command itself 时没有描述该选项,这可能只是文档中的一个错误,但它可能有效:

az webapp deploy --resource-group Group 
                 --name Name
                 --src-path ./startup.sh 
                 --path /home/site/wwwroot/startup.sh
                 --type=startup

请注意,您提供的路径是默认路径;因此,如果需要,您可以安全地删除它:

az webapp deploy --resource-group Group 
                 --name Name
                 --src-path ./startup.sh
                 --type=startup

最后,尝试在您的脚本中包含一些调试或 echo 命令:也许问题可能是由任何权限问题引起的,并且在日志中记录一些痕迹也可能会有所帮助。