У нас есть опубликованный c исходный код этой задачи, поэтому вы можете проверить эту страницу , чтобы проанализировать, какое именно действие выполняет эта команда.
Для изображения есть 2 разных идентификатора: tag
и digest
. Теперь давайте предположим один сценарий:
В большинстве случаев помеченное изображение в реестре контейнеров изменяемое , поэтому при наличии соответствующих разрешений вы или любой пользователь можете обновить / отправить / удалить изображение с таким же тег к этому реестру. Однако , когда вы развертываете изображение в рабочей среде, вы не можете быть уверены, что изображение с одним указанным тегом c не было перезаписано, и вы хотите развернуть его.
В настоящее время лучшим выбором будет digest
.
Поскольку digest
- это SHA256 , рассчитанный по изображению и идентифицирующий его , уникально . Когда в вашем изображении появятся какие-либо изменения, будут также изменены соответствующие SHA256 value
.
Объяснение этого действия:
Отметьте это строка кода (здесь определено ). Это рабочая логика c - считывает изображения, используемые в файле docker-compose.yml
, извлекает изображения и генерирует для них дайджест. Затем автоматически создается новый файл docker-compose.yml
, изображение которого будет указываться с помощью дайджеста в этом новом файле docker-compose.yml
.
Sample :
Я использовал определение задачи:
- task: DockerCompose@0
displayName: 'Lock services'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: {service connection name}
dockerComposeFile: 'Docker/docker-compose.yml'
action: 'Lock services'
removeBuildOptions: true
docker-compose.yml
:
version: '3'
services:
web:
image: xxxx/testwebapp
ports:
- "1983:80"
newsfeed:
image: xxx/merlin
redis:
image: redis
См. Сборку log
этой задачи:
И содержимое new docker-compose.yml
, которое генерируется.
(перечислить их с помощью команды cat xxx
) :
Теперь, когда Вы развертываете изображения в производство, просто используйте новый файл docker-compose.yml
, задача которого была сгенерирована автоматически. Это может гарантировать, что развернутый образ является версией, которую вы создали в начале, даже если кто-то перезаписывает этот образ позже.