Как получить доступ к Mopidy, запущенному в контейнере Docker, из другого контейнера - PullRequest
0 голосов
/ 03 июля 2018

Для начала, я более знаком с управлением Docker через Portainer, чем с консолью.

Что я делаю:

В настоящее время я запускаю Mopidy через контейнер, к которому другие машины обращаются через порт Mopidy по умолчанию. В другом контейнере я запускаю бот Slack, используя репозиторий Limbo в качестве базы. Оба они работают на Alpine Linux.

Что мне нужно:

Я хочу, чтобы мой бот Slack мог вызывать команды MPC, такие как отключение звука и т. Д. Вот где я застрял. Каков наилучший способ для этого

Что я пробовал:

Я мог бы зайти в другой контейнер для отправки команды, но делать это не имеет смысла, так как они оба работают на одном сервере.

1 Ответ

0 голосов
/ 03 июля 2018

Лучший способ соединить несколько контейнеров - определить стек служб, используя файл docker-compose.yml, и запустить все из них, используя docker-compose up. Таким образом, все контейнеры будут подключены через единую пользовательскую мостовую сеть , которая сделает все их порты доступными друг для друга без явной публикации. Это также позволит контейнерам обнаруживать друг друга по имени службы через DNS-разрешение.

Пример docker-compose.yml:

version: "3"
services:
  service1:
    image: image1
    ports:
      # the following only necessary to access port from host machine
      - "host_port:container_port"
  service2:
    image: image2

В приведенном выше примере любое приложение в контейнере service2 может получить доступ к некоторому порту на service1, просто используя адрес service2:port.

...