Может ли один докер перезапустить другой?

У меня есть ряд контейнеров в сети 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:

Спасибо за ваше время.

Могли бы вы сделать что-то вроде:

  1. Установите Webhook на ваш образ "локатора" Python
  2. .
  3. Создайте конфигурацию webhook, позволяющую выполнить команду "reboot"
  4. .
  5. Запустите сервер во время выполнения, а также ваш Python, со скопированной/монтированной конфигурацией
  6. .
  7. Используйте ваш "бэкенд" NGINX для маршрутизации соответствующих HTTP-команд на HTTP-сервер Webhook "локатора"
  8. .

Подобное позволит вам выполнять любые (предварительно сконфигурированные) команды на контейнере "локатора" через открытый HTTP-сервер "бэкенда". Очевидно, что безопасность и т.д. должны быть серьезно продуманы. Это также устраняет необходимость полного управления демоном Docker внутри контейнера.

Вернуться на верх