Конвейер выпуска Azure завершается с ошибкой при попытке извлечь изображение из ACR

#azure #azure-devops #azure-web-app-service #azure-pipelines-release-pipeline #azure-container-registry

#azure #azure-devops #azure-web-app-service #azure-pipelines-release-pipeline #azure-container-registry

Вопрос:

Я пытаюсь использовать конвейеры Azure для ci и cd.

1- Образ моего приложения создан и помещен в реестр контейнеров azure.

Конвейер выпуска 2. Попытка извлечь изображение из ACR выдает ошибку. Журналы из настроек контейнера:

 INFO  - Pulling image: registryname/repo:latest
ERROR - DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Get https://registry-1.docker.io/v2/registryname/repo/manifests/latest: unauthorized: incorrect username or password"}

ERROR - Pulling docker image registryname/repo:latest failed:
INFO  - Pulling image from Docker hub: registryname/repo:latest
ERROR - DockerApiException: Docker API responded with status code=NotFound, response={"message":"pull access denied for registryname/repo, repository does not exist or may require 'docker login': denied: requested access to the resource is denied"}

ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)
INFO  - Stopping site appname because it failed during startup.
 

Ss из конфигурации:
введите описание изображения здесь

Спасибо за вашу помощь.

Комментарии:

1. вам просто нужно передать действительный реестр контейнеров и имя образа

2. Я думаю, что мой реестр контейнеров действителен, и имя изображения также правильное. Почему вы считаете, что они недействительны?

3. Поскольку сообщение об ошибке указывает, что

4. Я проверил учетные данные, но, похоже, это правильно, однако, когда я пытаюсь войти в систему из cmd, например, docker login registryName, я получаю unauthorized: требуется аутентификация.

5. Вам необходимо создать подключение к службе из Azure DevOps или использовать cli для аутентификации с помощью acr

Ответ №1:

Когда вы используете ACR для хранения изображения и хотите развернуть изображения в нем в Azure Web App, вам необходимо задать имя образа как ACRName.azurecr.io/image:tag , а не только название изображения и тег. И установите переменные среды, такие как:

DOCKER_REGISTRY_SERVER_USERNAME — имя пользователя для сервера ACR. DOCKER_REGISTRY_SERVER_URL — полный URL-адрес сервера ACR. (Например, https://my-server.azurecr.io .) DOCKER_REGISTRY_SERVER_PASSWORD — пароль для сервера ACR.

И у учетных данных должно быть достаточно разрешений. Когда все в порядке, журналы контейнеров будут выглядеть следующим образом:

введите описание изображения здесь

Комментарии:

1. Спасибо за ваш ответ, но переменные среды определены так, как вы сказали выше. Вы написали, что у учетных данных должно быть достаточно разрешений. Как я могу это проверить?

2. @dcy Если вы используете имя администратора и пароль ACR, то у него уже достаточно разрешений. На самом деле, я думаю, что ваша проблема заключается в использовании неправильного имени изображения.

3. Спасибо, похоже, вы правы. Мое имя изображения было неправильным, теперь оно работает.