Как управлять версиями docker изображения в AWS ECS? - PullRequest
1 голос
/ 23 марта 2020

AWS Служба ECS указывает на определение задачи, которое содержит имя docker изображения, включая тег.

Поэтому, когда я создаю новую версию своего docker изображения, у меня есть 2 Возможности:

  1. Обновить определение задачи до новой версии, а затем обновить службу, чтобы она указала на новую редакцию определения задачи
  2. Использовать какой-нибудь тег для указания на последнюю версию, скажем, " текущий тег всегда будет указывать на последнюю версию, а определение задачи будет содержать «my-image: current», а затем мне просто нужно перезапустить службу ECS

Что лучше и почему?

1 Ответ

1 голос
/ 23 марта 2020

Используйте уникальный тег для каждой сборки и обновите определение задачи так, чтобы он указывал на новый тег (ваш первый вариант).

Большая проблема, с которой вы столкнетесь, заключается в том, что, как правило, Docker системы на основе будут стараться избегать вытягивания изображения, которое у них уже есть. Если вы перезапустите сервис, но узел, на котором он перезапустится, увидит, что он уже имеет my-image:current, он просто перезапустит его, не вытягивая обновленную версию. Похоже, что может работать - Как работает "последний" тег в определении задачи ECS и при извлечении экземпляров контейнера из ECR? включает в себя настройку, которая работает, но она немного Трудно сказать, просто взглянув на вещи, какую именно версию вы используете.

Вторая веская причина избегать «текущих» или «последних» тегов - иметь возможность откатываться назад. Если вы используете, например, систему тегов на основе меток времени, вы развертываете сборку 20200323, и она не работает, очень легко сбросить определение задачи обратно в сборку 20200322, чтобы вернуться к вчерашнему коду, пока ваши разработчики отлаживают вещи. Если вчера он был «текущим», а сегодня «текущим», то гораздо сложнее понять, каким должен быть «текущий».

...