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

问题描述 投票:1回答:1

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

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

我使用的是 发布-AzWebApp命令这个命令没有出错,我也试过不使用-Force参数和使用-AsJob参数,每次命令都能成功执行,但当我检查我的Web应用程序时,那里没有任何部署。如果我用不是来自容器,而是来自代码的web应用程序尝试这个完全相同的过程,它就会工作。我所说的codecontainer是指你在创建web应用时选择的这个设置。enter image description here

目前我使用的docker镜像也是Azure默认使用的,所以它应该是相同的Debian。我需要使用它,因为我想在我的Web应用程序中设置一些不同的东西,所以我想在Web应用程序上有自己的系统,但从Devops部署代码到它.然而,似乎这种类型的Web应用程序不支持部署 - 无论是从Devops gui,也不是从Azure CLI。我可以以某种方式将我的代码部署在运行在我的自定义docker镜像上的web应用上吗?

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

任何帮助是感激的,谢谢

azure powershell docker azure-web-sites devops
1个回答
1
投票

对于你的要求,首先,你需要知道Linux上的Web应用和容器的Web应用是两个不同的资源,所以它不会列出你的应用从docker镜像部署。其次,当你使用docker镜像时,意味着当你的代码发生变化时,你需要创建一个新的镜像,所以它不支持创建docker镜像。所以它不支持从docker镜像创建Web App,然后从DevOps发布代码。

你认为正确的选择。不用担心操作系统的问题,你可以使用Azure CLI命令创建docker镜像,并直接推送到Azure容器注册表。

az acr build -t image_name:tag -r acr_name source_code_path

然后将镜像从ACR部署到Web App上。这样一来,DevOps代理只是用来运行任务,而不是用来创建docker镜像。

© www.soinside.com 2019 - 2024. All rights reserved.