Docker + Localhost MySQL
1 min read
I was having the hardest time getting applications in docker containers to connect to the instance of mysql runnning on the host.
I finally found a great solution, so I figured I'd post it here for myself and so that others may find it as well.
route_localnetfor docker0 interface:
sysctl -w net.ipv4.conf.docker0.route_localnet=1
- Add these rules to iptables:
iptables -t nat -I PREROUTING -i docker0 -d 172.17.0.1 -p tcp --dport 3306 -j DNAT --to 127.0.0.1:3306 iptables -t filter -I INPUT -i docker0 -d 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
- Make sure you have a Mysql user who can connect from outside of 'localhost', i.e. from '%'. If you don't have one, you can create one like so:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
- Finally, in your docker run command or docker-compose file, change the mysql-server address to
172.17.0.1- which is the host's IP from the view of the container.