I have two Docker containers
- A Web API
- A Console Application that calls Web API
Now, on my local web api is local host and Console application has no problem calling the API.However, I have no idea when these two things are Dockerized, how can I possibly make the Url of Dockerized API available to Dockerized Console application?
i don't think i need a Docker Compose because I am passing the Url of API as an argument of the API so its just the matter of making sure that the Dockerized API's
url is accessible by Dockerized Console
Any ideas?
The problem can be solved easily if using compose feature. With compose, you just create one configuration file (
docker-compose.yml
) like this :To make it run, just call
up
like this :This is the best way to run all your stack, so, check this reference : https://docs.docker.com/compose/
Success!
You can use the
link
option withdocker run
:Run the API:
Run the client:
You should see that
api
can be resolved by docker.That said, going with
docker-compose
is still a better option.The idea is not to pass the url, but the hostname of the other container you want to call.
See Networking in Compose
This is what replace the deprecated
--link
option.And if your containers are not running on a single Docker server node, Docker Swarm Mode would enable that discoverability across multiple nodes.