Как сохранить работоспособность контейнера ecs при выполнении длительного сценария запуска

Я развертываю приложение со сценарием запуска, который генерирует данные кеша, если он не существует, если он существует, этот процесс будет пропущен и будет запущено основное приложение, все это контролируется ENTRYPOINT["/opt/entrypoint.sh"], таможенным сценарием, который определяет что делать в зависимости от сценария.

У меня проблема в том, что AWS ECS убивает контейнер и помечает его как неисправный. Однако он запускает entrypoint.sh, указанный в Dockerfile. Что в этом «нездорового»? Как я могу сохранить генерацию кеша перед запуском основного приложения в контейнере? Это однократный процесс, который происходит, когда изображение сначала извлекается и запускается как локальный контейнер.

1
0
824
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Похоже, ваша политика проверки работоспособности определяет контейнер как нездоровый, даже если он только запускается.

Чтобы исправить это, вам нужно настроить проверки работоспособности. Это можно сделать в нескольких местах (целевая группа, определение задачи). Я предлагаю вам сделать это в определении задачи, потому что проверка работоспособности будет связана с поведением вашего контейнера. Вот документация для полей проверки работоспособности в определении задачи.

Внимание! По моему опыту, вы не можете удалить конфигурацию проверки работоспособности после добавления ее в определение задачи. В моем случае имело смысл продолжать проверять работоспособность из ELB (поэтому мне пришлось определить их в целевой группе). Мне пришлось удалить определение задачи и создать его заново, чтобы избавиться от конфигурации проверки работоспособности.

Ответ принят как подходящий

В конечном итоге мы с моей организацией решили эту проблему, сделав контейнер Docker как можно более тонким и используя снимки состояния и тома AWS для управления внешней полезной нагрузкой, а не пытаясь использовать первую загрузку для передачи данных в локальный контейнер Docker. Это потребовало небольшого рефакторинга, но дало нам все необходимое для продвижения вперед. Докер работал нормально, к сведению, это была проверка работоспособности AWS ECS и невозможность приостановить другие сервисы, пока этот загружался в течение длительного периода времени.

Другие вопросы по теме