Как получить доступ к Mopidy, запущенному в Docker-контейнере, из другого контейнера?
Для начала, я более знаком с управлением Docker через Portainer, чем с консолью.
Что я делаю:
В настоящее время я запускаю Mopidy через контейнер, к которому другие машины обращаются через порт Mopidy по умолчанию. В другом контейнере я запускаю бот Slack, используя репозиторий Limbo в качестве базы. Оба они работают на Alpine Linux.
Что мне нужно:
Я хочу, чтобы мой бот Slack мог вызывать команды MPC, такие как отключение звука и т. Д. Вот где я застрял. Каков наилучший способ для этого работать
Что я пробовал:
Я мог бы зайти в другой контейнер, чтобы отправить команду, но это не имеет смысла, поскольку они оба работают на одном и том же сервере.
1 ответ
Лучший способ соединить несколько контейнеров - определить стек служб, используя 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
адрес.