I have two docker containers:
- database
- app that consumes the database
I run my database container like this:
docker run --name my-db -p 127.0.0.1:3306:3306 my-db-image
And my app container like this:
docker run --name my-app --network host -it my-app-image
This works fine on Linux. I can access the DB from both the host system and the app container. Perfect.
However --network host
does not work on Mac and Windows:
The host networking driver only works on Linux hosts, and is not supported on Docker for Mac, Docker for Windows, or Docker EE for Windows Server.
(source: https://docs.docker.com/network/host/)
I can still access the database via 127.0.0.1:3306
from the main host, but I cannot access it from the app container.
How can I solve this issue? How can I let the app container connect to the database (and keep accessing also to the DB from the main host using 127.0.0.1:3306
)?
I've tried using host.docker.internal
and gateway.docker.internal
but it doesn't work.
I've also tried to launch both containers using --network my-network
after creating my-network
with docker network create my-network
but it doesn't work.
I can't figure out how to solve this issue.
docker network create my-network
option should work as long as you refer to the db container by name from the app container (my-db:3306
). – Colloidal--network host
. So I'm gonna accept your answer since it's the right solution to the general case. – Sympathin