繁体   English   中英

Powershell + Azure 应用服务 + Azure 容器注册表

[英]Powershell + Azure App Service + Azure Container Registry

我正在使用 powershell 来处理各种 CI/CD 功能。

==============================================

这是我到目前为止所做的。

  1. 构建 NodeJS 应用程序
  2. 容器中的 Package NodeJS 应用程序
  3. 将容器发布到私有 Azure 容器注册表

==============================================

这是我想要弄清楚的。

  1. 即时创建应用服务计划
  2. 即时创建 Web 应用程序(容器)
  3. 将容器从 ACR 拉入应用服务

这是我的代码。 它似乎不起作用。

$azureContainerCredential = Get-AzContainerRegistryCredential -ResourceGroupName $env:AZURE_CONTAINER_REGISTRY_RESOURCE_GROUP -Name $env:AZURE_CONTAINER_REGISTRY_NAME
$azureSecuredPassword = ConvertTo-SecureString $azureContainerCredential.Password -AsPlainText -Force

$azureContainerRegistry = Get-AzContainerRegistry -ResourceGroupName $env:AZURE_CONTAINER_REGISTRY_RESOURCE_GROUP

$azureAppServicePlan = Get-AzAppServicePlan -ResourceGroupName "amlihelloworld" -Name "amlihelloworld-app-service-plan"

if($null -eq $azureAppServicePlan)
{
  "==============================================================================="
   Write-Output  "CREATING HELLO WORLD WEB APPLICATION"

   $azureAppServicePlan = New-AzAppServicePlan -Name "amlihelloworld-app-service-plan" -Location "Central 
   US" -ResourceGroupName "amlihelloworld" -Tier Standard

   $azureApp = New-AzWebApp -ResourceGroupName "amlihelloworld" -Name "amlihelloworld2" -AppServicePlan 
   $azureAppServicePlan.Name -ContainerImageName "amlihelloworld:20200422.7" -ContainerRegistryPassword 
   $azureSecuredPassword  -ContainerRegistryUrl $azureContainerRegistry.LoginServer - 
     ContainerRegistryUser $azureContainerCredential.Username

   $azureAppSlot = New-AzWebAppSlot -Name $azureApp.Name  -ResourceGroupName "amlihelloworld" -Slot 
    "development"
}

$azureApp1 = Get-AzWebApp -ResourceGroupName "amlihelloworld" -Name "amlihelloworld"

==============================================

这是发生的事情

当我将插槽切换到我的应用程序进行生产时。

它似乎根本没有显示我的应用程序。

我怎么知道它是否上传了我的应用程序?

实际上,我不认为代码中存在逻辑问题,而是命令本身存在问题。

首先,如果要将PowerShell命令切割成多行,则需要在除最后一行之外的每一行添加字符` append。 如果你想得到它,你最好使用相同的 web 应用程序名称。 所以你想对你的代码做一点改动:

$azureContainerCredential = Get-AzContainerRegistryCredential -ResourceGroupName $env:AZURE_CONTAINER_REGISTRY_RESOURCE_GROUP -Name $env:AZURE_CONTAINER_REGISTRY_NAME
$azureSecuredPassword = ConvertTo-SecureString $azureContainerCredential.Password -AsPlainText -Force

$azureContainerRegistry = Get-AzContainerRegistry -ResourceGroupName $env:AZURE_CONTAINER_REGISTRY_RESOURCE_GROUP

$azureAppServicePlan = Get-AzAppServicePlan -ResourceGroupName "amlihelloworld" -Name "amlihelloworld-app-service-plan"

if($null -eq $azureAppServicePlan)
{
  "==============================================================================="
   Write-Output  "CREATING HELLO WORLD WEB APPLICATION"

   $azureAppServicePlan = New-AzAppServicePlan -Name "amlihelloworld-app-service-plan" -Location "Central 
   US" -ResourceGroupName "amlihelloworld" -Tier Standard

   $azureApp = New-AzWebApp -ResourceGroupName "amlihelloworld" -Name "amlihelloworld2" `
   -AppServicePlan $azureAppServicePlan.Name `
   -ContainerImageName "amlihelloworld:20200422.7" `
   -ContainerRegistryPassword $azureSecuredPassword  `
   -ContainerRegistryUrl $azureContainerRegistry.LoginServer `
   -ContainerRegistryUser $azureContainerCredential.Username

   $azureAppSlot = New-AzWebAppSlot -Name $azureApp.Name  -ResourceGroupName "amlihelloworld" -Slot 
    "development"
}

$azureApp1 = Get-AzWebApp -ResourceGroupName "amlihelloworld" -Name "amlihelloworld2"

您还需要仔细检查您的环境变量是否正常存在。

显然这是微软方面的一个错误,无法通过 powershell 脚本发布容器。 请在此处阅读: https://github.com/Azure/azure-powershell/issues/10645

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM