Conéctese a la base de datos remota MySQL desde el contenedor docker
Estoy trabajando para contener una aplicación Django 1.5.x que se conecta a una base de datos MySQL en un servidor separado a través de ODBC:
[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306
Puedo ejecutar la aplicación Django en mi máquina local (acoplador externo) con una conexión a la base de datos remota a través del reenvío de puertos y SSH:
ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER
He configurado un contenedor Docker para la aplicación usando Centos 6.x, pero no puedo hacer que la conexión MySQL funcione. El contenedor tiene instalado MySQL y se está ejecutando mysqld.
Mi archivo docker-compose.yml tiene este aspecto:
version: "2"
services:
web:
build: .
image: MY_IMAGE
container_name: MY_CONTAINER
network_mode: "host"
ports:
- "3307:3306"
command: /bin/bash
Con el contenedor en ejecución, puedo ejecutar el siguiente comando (fuera del contenedor) para mostrar las bases de datos en la base de datos remota:
docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307
Pero desde el interior del contenedor falla el mismo comando:
echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3306
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)