#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.
Спасибо за вашу помощь.
Комментарии:
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. Спасибо, похоже, вы правы. Мое имя изображения было неправильным, теперь оно работает.