Подключение из одного контейнера docker в другой, управляемый mutagen

#docker #nginx #docker-compose #mutagen

#docker #nginx #docker-compose #mutagen

Вопрос:

У меня есть mutagen, работающий в двух проектах. Проект A выполняется на порту 1025, а проект B выполняется на порту 1027. Когда я хочу подключиться из проекта A в проект B, я всегда получаю curl: (52) Пустой ответ от сервера. Ранее, когда я хотел это сделать, я устанавливал URL-адрес для проекта B как http://host.docker.internal:1027 .

Интересно то, что я могу подключиться к http://localhost:1027 из моего браузера, а также из Postman, но когда я запускаю curl http://localhost:1027 или скручиваться http://localhost:1025 , я получаю пустой ответ от сервера. Поскольку PHP использует curl внутренне, все вызовы заканчиваются одинаково. И когда я запускаю проект B с помощью классического docker-compose up, он работает без каких-либо проблем (включая curl). Для чего нужна альтернатива mutagen http://host.docker.internal или как я могу подключиться изнутри одного проекта к другому?

Я использую Docker для Mac (без поддержки compose), и вот путь пересылки из mutagen.yml

 forward:
    nginx:
        source: "tcp:localhost:1025"
        destination: "docker://project-a-mutagen:tcp:nginx:1025"
  

Проект B имеет ту же конфигурацию, но с портом 1027

Спасибо за помощь

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

Комментарии:

1. Вы упомянули, что используете docker-compose, поэтому для подключения к службе из другого вы должны использовать имя службы docker-compose, поскольку оно действует как имя хоста DNS для каждого контейнера. Пример http://my-service1 , http://my-service2

2. Это правда, но в данном случае я пытаюсь подключиться между контейнерами в двух совершенно разных проектах. Например. оба имеют свой контейнер nginx и не используют одну и ту же сеть

3. Почему бы просто не создать общую оверлейную сеть и не подключить к ней оба проекта? Я считаю, что то, что вы пытаетесь сделать, противоречит изоляции, которую docker устанавливает по умолчанию.