- tocdepth
2
Sidecar- и init-контейнеры в Container Apps
Контейнерные приложения в Container Apps в большинстве случаев используют один основной (main) контейнер. В более сложных сценариях приложение также может использовать sidecar- и init-контейнеры для улучшения процессов развертывания и управления приложением.
Примечание
Sidecar- и init-контейнеры доступны в режиме Preview для тестирования их возможностей и исправления ошибок перед выводом в общий доступ.
Sidecar-контейнеры
Sidecar-контейнеры — специальный тип контейнеров, которые запускаются одновременно с main-контейнером, что позволяет выполнять задачи параллельно. Sidecar-контейнеры могут использоваться для выполнения вспомогательных функций для main-контейнера: логирования, мониторинга, аутентификации, фоновых процессов или тестирования функциональности приложений.
На схеме показан пример использования sidecar-контейнера. Приложение из main-контейнера отправляет данные в базу данных, запущенную в sidecar-контейнере. При удалении контейнеров данные в базе также удаляются. Такой способ можно использовать для тестирования и отладки сценария разделения ответственности — когда дополнительная функциональность приложения (база данных) реализуется в отдельном от основного приложения контейнере.
Развертывание sidecar-контейнеров
Вы можете добавить sidecar-контейнер в процессе создания main-контейнера. Sidecar-контейнеров может быть несколько, main-контейнер всегда один.
Sidecar-контейнеры размещаются в той же внутренней сети, что и main-контейнер. Основное приложение может обращаться к sidecar-контейнеру, используя localhost с указанием порта, на котором работает sidecar-контейнер. Порты main- и sidecar-контейнера должны быть разными.
Init-контейнеры
Init-контейнеры — специальный тип контейнеров, которые запускаются перед запуском main-контейнера. Init-контейнеры обычно используются для выполнения инициализирующей логики для основного приложения: запуск скриптов, настройки базы данных, загрузки зависимостей или настройки переменных среды.
Развертывание init-контейнеров
Вы можете добавить init-контейнер в процессе создания main-контейнера. Init-контейнеров может быть несколько, main-контейнер всегда один.
Init-контейнеры запускаются последовательно и завершают свои задачи до запуска main-контейнера. Последовательность запуска вы определяете в процессе добавления init-контейнеров к main-контейнеру.
Если init-контейнер не выполнен, сервис будет перезапускать процесс пока init-контейнер не выполнится или не будет достигнут лимит на количество итераций перезапуска. Если лимит на количество итераций перезапуска достигнут, но init-контейнер не выполнился, то приложение в main-контейнере не запустится. Такое приложение будет иметь статус «Ошибка», который можно посмотреть на странице контейнерных приложений в личном кабинете.
Приложение в init-контейнере не должно запускать долгоживущий процесс. Процесс должен завершаться сразу после выполнения, иначе это приведет к ошибке при запуске основного приложения в main-контейнере.
для Dev & Test