Я запускаю док-контейнеры Apache, MySQL и memcached из AWS ECR в экземпляр ECS.Инженеры могут просматривать и вносить изменения по своему усмотрению.Срок действия этих контейнеров истекает через определенный промежуток времени, но они хотят сохранить изменения своей базы данных для использования в будущих контейнерах.
Я смотрю, есть ли решение, которое я могу автоматизировать, чтобы этот процесс происходил до завершения работы контейнеров, с помощью Lambda, aws-cli или какой-либо другой утилиты.
Я ищурешение, которое возьмет контейнер MySQL и создаст из него новое изображение.Я видел этот вопрос, и это в основном то, что я хочу: Как создать новый образ докера из запущенного контейнера на Amazon?
Но вы должны запустить docker commit
из экземпляра ECS кака также выполнить вход и нажать оттуда.Похоже, не существует способа отправить зафиксированный образ в ECR без необходимости входа в систему с помощью aws ecr get-login --no-include-email
и запуска вывода для докера для получения токена.
Проблема, с которой я столкнулся, заключается в том, чтоесли мы дойдем до точки, где у нас работает несколько экземпляров ECS, было бы трудно узнать, из какого контейнера запускается инженер, SSHing на этот сервер и запускает docker commit
, docker tag
, aws ecr login
и docker push
команд.На мой взгляд, это выглядит несколько странно и подвержено ошибкам.
Я перестраиваю контейнеры MySQL и отправляю их в ECR каждый час, чтобы иметь последние обновления контента.Для запуска контейнеров я использую комбинацию ecs-cli и aws-cli для использования файла docker-compose.yml для создания задачи в ECS.
Есть ли какая-то функциональность, которую я могу использовать для фиксации работающегоконтейнер в ECR с новым именем / тегом?
Другой вариант, который я изучал, - запуск контейнера MySQL с постоянным хранилищем (EBS / EFS), но я все еще пытаюсь понять, выполнимо ли это, поскольку мне нужно было бы каким-то образом пометить постоянное хранилище, чтобы оно толькоиспользовать, когда инженер запускает его таким образом.По сути, у меня был бы уникальный файл docker-compose.yml, специфичный для постоянных томов, и он либо запустил бы новый контейнер со свежими данными mysql, либо использовал бы существующий, если он существует, с определенным именем.