我正在尝试设置一个脚本来自动为我的应用程序创建新环境,并且我需要一个 docker web 应用程序。 问题是我需要从 docker hub 中提取图像。 当我在 juste setup 中从界面创建一个环境时,如下所示:
问题是我不知道如何通过 az cli 在 Docker Hub 上配置“Source de registre”。
目前我用来创建新的 Web 应用程序资源的命令是这个
az webapp create -g name_of_group -p name_of_plan -n resource-test2 -i https://registry.hub.docker.com/publisher/name_of_image:version -s name_of_image -w my_password
这个命令的问题是它给了我这个配置
这不起作用,因为我无法登录(可能是因为它没有配置为 Docker Hub 注册表)。
您知道如何在 az cli 命令中指定此配置吗?谢谢
要部署存储在私有注册表或 Docker Hub 中的镜像,您可以设置以下环境变量:
在此处获取更多详细信息。您可以使用 CLI 命令 az webapp config appsettings set
# First create the webapp with a docker container:
~$ az webapp create -n $webAppName -g $resGroup -p $servicePlan -i $containerImg -s $dockerUsr -w $dockerPass --tags Lifecycle=Test
# Update docker container settings with your private docker hub repo credentials:
~$ az webapp config container set --name $webAppName --resource-group $resGroup --docker-custom-image-name 'DOCKER|dockeruser/myrepo:tweb1' --docker-registry-server-url 'https://index.docker.io/v1' --docker-registry-server-user 'dockeruser' --docker-registry-server-password 'xxxxxxxxxxx'
这就是我如何授予应用程序服务访问权限,以使用用户分配的托管身份从 ACR 中提取图像。
首先,我创建了应用程序服务:
$AppService = az webapp create `
--name $AppServiceName_container_linux `
--acr-use-identity `
--plan $AppServicePlan_linux `
--resource-group $rgname `
--container-image-name $imagePath `
--assign-identity $identityId `
--output json | ConvertFrom-Json
然后,我单独设置有权从ACR拉取图像的身份
$property = "properties.siteConfig.AcrUserManagedIdentityID=${ClientID}"
$tmp = az resource update `
--ids $appServiceID `
--set $property `
--output json | ConvertFrom-Json
您可以运行以下命令来验证身份设置是否正确:
$settings = az webapp config show `
--resource-group $rgname `
--name $AppServiceName_container_linux `
--output json | ConvertFrom-Json
Write-Host "`nThese two settings must be set for successful ACR pull:"
Write-Host "acrUseManagedIdentityCreds='$($settings.acrUseManagedIdentityCreds)'"
Write-Host "acrUserManagedIdentityID='$($settings.acrUserManagedIdentityId)'"
acrUseManagedIdentityCreds 应设置为 true,并且 acrUserManagedIdentityID 应包含您的托管身份的 GUID。我在这里写了一篇关于这个问题以及如何解决它的更深入的文章
https://nestenius.se/2024/08/27/deploy-a-container-to-azure-app-services-using-azure -cli-和用户分配的托管身份/