是否可以将代码从DevOps部署到在Linux容器上运行的Azure Web?

时间:2020-05-19 11:52:28

标签: azure powershell docker azure-web-app-service devops

我有一个在Linux上运行的Web应用程序,该应用程序是从Docker Container部署的。 容器来自Azure容器注册表,是在创建Web应用程序时定义的。 当我尝试设置发布管道以部署到此Web应用程序时,它没有为我提供这种选择。 在Linux上设置订阅和Web应用程序时,我只会看到从代码部署的Web应用程序。我来自docker容器的Web应用不在应用名称选择列表中:

enter image description here

我尝试使用Azure PowerShell手动执行此操作。我已经建立了本地连接并尝试测试部署,但是它不起作用。 我已将存储库作为zip文件下载到本地,并且尝试将其从此本地zip文件部署到Azure上的Web应用程序。我尝试从Powershell部署它:

$webapp = Get-AzWebApp -ResourceGroupName "MyResourceGroup" -Name "my-container-app"
$path = 'C:\temp\repository.zip'
Publish-AzWebApp -WebApp $webapp -ArchivePath $path -Force

我正在使用Publish-AzWebApp command。 该命令没有错误,我也尝试了不带-Force参数和带-AsJob参数的情况。 每次命令成功执行时,但是当我检查Web应用程序时,都没有部署任何内容。如果我尝试使用不是来自容器而是来自代码的Web应用程序执行此确切过程,那么它将起作用。通过代码/容器,我的意思是您在创建Web应用程序时选择的以下设置: enter image description here

当前,我正在使用docker映像,Azure也默认使用该映像,因此它应该与Debian相同。我需要使用它,因为我想在Web应用程序中进行一些不同的设置,因此我想在Web应用程序中拥有自己的系统,但要从Devops部署代码。 但是,似乎不建议部署这种类型的Web应用程序-来自Devops gui或Azure CLI的nether。我可以以某种方式在我的自定义Docker映像上运行的Web应用程序上部署代码吗?

PS:一种选择是在Devops管道中使用该代理,从中编译docker映像,然后将其与我的代码一起发布到Azure容器存储库中,从中可以在我的Web应用程序中使用它。问题是您只能从2个Ubuntu版本中选择一个作为构建管道的代理,而我不希望那样。

感谢您的帮助,谢谢

1 个答案:

答案 0 :(得分:1)

首先,对于您的需求,您需要了解Linux上的Web App和Container的Web App是两种不同的资源,因此它不会列出从docker映像部署的应用程序。其次,当您使用docker映像时,这意味着您需要在代码更改时创建一个新映像。因此,它不支持从docker映像创建Web App,然后从DevOps发布代码。

您认为正确的选择。不必担心操作系统,您可以使用Azure CLI命令创建docker映像并将其直接推送到Azure容器注册表:

# 25% data in each column 
x=25.0
factor = int((len(df)*x)/100) # factor=1 in the example above

df_sample=df.sample(factor)

然后将映像从ACR部署到Web App。这样,DevOps代理仅用于运行任务,而不用于创建docker映像。