Может ли один докер перезапустить другой?
У меня есть ряд контейнеров в сети docker, назову их 'backend' (nginx-django) и 'locator' (чистый скрипт на python). Я хотел бы добиться того, чтобы через веб-запрос к докеру 'backend' происходил перезапуск модуля 'locator'.
Наш текущий подход заключался в попытке вызвать внутри бэкенда консоль bash, чтобы выдать a
sudo docker-compose restart locator
но у нас есть несколько проблем с разрешением.
Есть ли способ управлять изнутри одного докера (в нашем случае 'backend') другими докерами, образующими сеть, как это делается с помощью команды docker-compose?
Управление нашими докерами осуществляется через файл docker-compose.yml, который выглядит следующим образом:
version: "3"
services:
locator:
container_name: base-location
image: registry.gitlab.com/our-group/our-locator:base-location
volumes:
- ./configs:/configs
- ./logs/locator:/configs/logs
- ./sniffing:/app/sniffing
ports:
- "5000:5000"
- "3788:3788"
- "3787:80"
networks:
- app_network
depends_on:
- backend
restart: always
backend:
container_name: backend
environment:
- prometheus_multiproc_dir=/dev/shm
image: registry.gitlab.com/our-group/our-backend/backend:develop_fase1
volumes:
- ./configs:/configs
- ./logs/backend:/app/logs
- ./media:/app/media
ports:
- "8000:80"
networks:
- app_network
restart: always
networks:
app_network:
Спасибо за ваше время.
Могли бы вы сделать что-то вроде:
- Установите Webhook на ваш образ "локатора" Python .
- Создайте конфигурацию webhook, позволяющую выполнить команду "reboot" .
- Запустите сервер во время выполнения, а также ваш Python, со скопированной/монтированной конфигурацией .
- Используйте ваш "бэкенд" NGINX для маршрутизации соответствующих HTTP-команд на HTTP-сервер Webhook "локатора" .
Подобное позволит вам выполнять любые (предварительно сконфигурированные) команды на контейнере "локатора" через открытый HTTP-сервер "бэкенда". Очевидно, что безопасность и т.д. должны быть серьезно продуманы. Это также устраняет необходимость полного управления демоном Docker внутри контейнера.