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

时间:2020-04-26 18:48:57

标签: azure powershell azure-web-app-service azure-container-registry

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

=========================================== >

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

  1. 构建NodeJS应用
  2. 将NodeJS应用打包在容器中
  3. 将容器发布到私有Azure容器注册表

=========================================== >

这就是我要找出的。

  1. 即时创建应用服务计划
  2. 即时创建Web App(容器)
  3. 将容器中的ACR从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"

=========================================== >

这是怎么回事

当我将广告位切换到我的应用进行生产时。

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

如何确定它是否上传了我的应用程序?

1 个答案:

答案 0 :(得分:1)

实际上,我认为代码中没有逻辑问题,但命令本身存在问题。

首先,如果要将PowerShell命令切成多行,则需要添加字符`,除了最后一行,在每行之后附加。而且,如果要获取名称,最好使用相同的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"

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