Я создал api, который собирает данные из нескольких источников (в этих примерах они отправляют запросы на 88 и 99 пунктов), а затем предоставляет совокупность этих данных через несколько конечных точек. Затем у меня есть два приложения, которые получают данные из этого API и делают визуализацию.
Я точно определил эту проблему: хотя docker-compose документация (любые учебные пособия) ясно заявляет:
Важно отметить различие между HOST_PORT и CONTAINER_PORT. В приведенном выше примере для db значение HOST_PORT равно 8001, а порт контейнера - 5432 (postgres по умолчанию). Сетевая сервис-связь использует CONTAINER_PORT. Когда HOST_PORT определен, сервис доступен и вне роя.
... но мои 2 приложения по-прежнему не могут получить доступ к API.
Если я выставляю свой порт api в обоих приложениях, я получаю сообщение об ошибке, что этот порт уже задан (как ожидается, для документов), но я не могу понять, почему эти приложения не могут вызывать api без предоставления портов (isn ' т это межсервисная связь?).
Я также нашел несколько одинаковых решений с nginx , но, поскольку это мой собственный проект для свободных людей, я хотел бы узнать, в чем я не прав, и сделать это правильно, потому что, очевидно, я что-то неправильно понимаю из документации. Моя цель сейчас состоит в том, чтобы только два приложения могли выполнять вызов API. Пока это на одном хосте. Может кто-нибудь помочь с решением или советами и идеями?
Мой текущий docker-compose
services:
host:
image: "api_host"
ports:
- 88:88
- 99:99
app1:
image: "app"
ports:
- 7777:7777
app2:
image: "app"
ports:
- 8888:8888```