tocdepth

2

Sidecar- и init-контейнеры в Container Apps

Контейнерные приложения в Container Apps в большинстве случаев используют один основной (main) контейнер. В более сложных сценариях приложение также может использовать sidecar- и init-контейнеры для улучшения процессов развертывания и управления приложением.

Примечание

Sidecar- и init-контейнеры доступны в режиме Preview для тестирования их возможностей и исправления ошибок перед выводом в общий доступ.

Sidecar-контейнеры

Sidecar-контейнеры — специальный тип контейнеров, которые запускаются одновременно с main-контейнером, что позволяет выполнять задачи параллельно. Sidecar-контейнеры могут использоваться для выполнения вспомогательных функций для main-контейнера: логирования, мониторинга, аутентификации, фоновых процессов или тестирования функциональности приложений.

На схеме показан пример использования sidecar-контейнера. Приложение из main-контейнера отправляет данные в базу данных, запущенную в sidecar-контейнере. При удалении контейнеров данные в базе также удаляются. Такой способ можно использовать для тестирования и отладки сценария разделения ответственности — когда дополнительная функциональность приложения (база данных) реализуется в отдельном от основного приложения контейнере.

../_images/schm__sidecar.svg

Развертывание sidecar-контейнеров

Вы можете добавить sidecar-контейнер в процессе создания main-контейнера. Sidecar-контейнеров может быть несколько, main-контейнер всегда один.

Sidecar-контейнеры размещаются в той же внутренней сети, что и main-контейнер. Основное приложение может обращаться к sidecar-контейнеру, используя localhost с указанием порта, на котором работает sidecar-контейнер. Порты main- и sidecar-контейнера должны быть разными.

Init-контейнеры

Init-контейнеры — специальный тип контейнеров, которые запускаются перед запуском main-контейнера. Init-контейнеры обычно используются для выполнения инициализирующей логики для основного приложения: запуск скриптов, настройки базы данных, загрузки зависимостей или настройки переменных среды.

../_images/schm__init.svg

Развертывание init-контейнеров

Вы можете добавить init-контейнер в процессе создания main-контейнера. Init-контейнеров может быть несколько, main-контейнер всегда один.

Init-контейнеры запускаются последовательно и завершают свои задачи до запуска main-контейнера. Последовательность запуска вы определяете в процессе добавления init-контейнеров к main-контейнеру.

Если init-контейнер не выполнен, сервис будет перезапускать процесс пока init-контейнер не выполнится или не будет достигнут лимит на количество итераций перезапуска. Если лимит на количество итераций перезапуска достигнут, но init-контейнер не выполнился, то приложение в main-контейнере не запустится. Такое приложение будет иметь статус «Ошибка», который можно посмотреть на странице контейнерных приложений в личном кабинете.

Приложение в init-контейнере не должно запускать долгоживущий процесс. Процесс должен завершаться сразу после выполнения, иначе это приведет к ошибке при запуске основного приложения в main-контейнере.

Запустили Evolution free tier
для Dev & Test
Получить