мой вопрос в двух словах ... В контексте хостинга AWS EC2, что мне нужно сделать, чтобы разрешить моему внешнему контейнеру fetch
из конечной точки моего внутреннего сервера, локально?
подробности:
У меня есть 2 контейнера Docker, работающих через docker-compose. Локально они работают нормально, и я могу запросить внутренний контейнер (который является приложением узла) из моего внешнего интерфейса (приложение React), используя:
http://localhost:3000/someendpoint
После перемещения всего на экземпляр AWC EC2 я больше не могу подключаться к localhost таким образом. В моих файлах ничего не изменилось.
Вот часть моего docker-compose.yml, который содержит 2 рассматриваемых сервиса:
backend:
container_name: somename-backend
image: somename-backend
environment:
NODE_ENV: production
volumes:
- ./server:/server
ports:
- "3000:3000"
frontend:
container_name: somename-frontend
image: somename-frontend
environment:
NODE_ENV: production
volumes:
- ../src:/src
ports:
- "8081:8081"
depends_on:
- backend
Если у меня есть запрос внешнего интерфейса:
http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com:3000/someendpoint
Я получил ожидаемый результат. Однако это «внешний» URL-запрос, и я думаю, что было бы лучше сделать этот запрос внутренним. Я пробовал:
http://localhost:3000/someendpoint //fails
и
http://0.0.0.0:3000/someendpoint //fails
и
http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com:3000/someendpoint //succeeds
Нужно ли выставлять в моей группе безопасности что-то, чего мне не хватает?
Я выставил различные порты своему IP-адресу, и снова, используя полное публичное достояние, все работает, но я не думаю, что мне нужно использовать полное публичное достояние, чтобы мой интерфейс реагировал на fetch
с URL-адреса в мой бэкэнд, когда оба docker-контейнера размещены на одном и том же экземпляре EC2 и работают через docker-compose.