Verbindung zur Remote-MySQL-Datenbank vom Docker-Container
Ich arbeite daran, eine Django 1.5.x-Anwendung zu containerisieren, die über ODBC eine Verbindung zu einer MySQL-Datenbank auf einem separaten Server herstellt:
[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306
Ich kann die Django-App auf meinem lokalen Computer (außerhalb des Dockers) mit einer Verbindung zur entfernten Datenbank über Portweiterleitung und SSH ausführen:
ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER
Ich habe mit Centos 6.x einen Docker-Container für die App eingerichtet, kann die MySQL-Verbindung jedoch nicht herstellen. Auf dem Container ist MySQL installiert und mysqld läuft.
Meine docker-compose.yml-Datei sieht folgendermaßen aus:
version: "2"
services:
web:
build: .
image: MY_IMAGE
container_name: MY_CONTAINER
network_mode: "host"
ports:
- "3307:3306"
command: /bin/bash
Wenn der Container ausgeführt wird, kann ich den folgenden Befehl ausführen (außerhalb des Containers), um die Datenbanken in der entfernten Datenbank anzuzeigen:
docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307
Aber aus dem Container heraus schlägt derselbe Befehl fehl:
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)