my question in a nutshell... Within the context of AWS EC2 hosting, what do I need to do to allow my frontend container to fetch from an endpoint on my backend container, locally?
Details:
I have 2 Docker containers running via docker-compose. Locally, they work fine and I am able to query the backend container (which is a node app) from my frontend container (a React app) using:
http://localhost:3000/someendpoint
After moving everything onto an AWC EC2 instance I am no longer able to connect to localhost in this manner. Nothing has changed in my files.
Here is part of my docker-compose.yml that contains the 2 services in question:
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
If I have the frontend query:
http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com:3000/someendpoint
I get the result I expect. However, this is an "external" url query and I think it would be better to make that query internal. I have tried:
http://localhost:3000/someendpoint //fails
and
http://0.0.0.0:3000/someendpoint //fails
and
http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com:3000/someendpoint //succeeds
Do I need to expose something in my security group that I might be missing?
I exposed the various ports to my IP address and again, using the full public domain everything works but I do not think I should have to use the full public domain in order for my react frontend to fetch from a url in my backend when both docker containers are hosted on the same EC2 instance and running via docker-compose.