Connect to remote MySQL db à partir d'un conteneur docker

Je travaille pour placer un Django 1.5.x application qui se connecte à une base MySQL sur un serveur distinct via ODBC:

[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306

Je suis en mesure d'exécuter le Django app sur ma machine locale (à l'extérieur de docker) avec une connexion à distance à une base de données via la redirection de port & SSH:

 ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER

J'ai mis en place un conteneur Docker pour l'application à l'aide de Centos 6.x, mais ne peut pas obtenir la connexion MySQL de travail. Le conteneur a MySQL et le serveur mysqld en cours d'exécution.

Mon menu fixe-composer.fichier yml ressemble à ceci:

version: "2"
services:
  web:
    build: .
    image: MY_IMAGE
    container_name: MY_CONTAINER
    network_mode: "host"
    ports:
      - "3307:3306"
    command: /bin/bash

Avec le conteneur de course, je peux exécuter la commande suivante (à l'extérieur du récipient) pour afficher les bases de données sur la distance DB:

docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307

Mais à partir de l'intérieur du conteneur de la même commande échoue:

    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)
  • Vous pouvez probablement le faire, le tunnel SSH pour écouter la docker0 interface (172.17.0.1) ou toutes les interfaces (0.0.0.0, avis le risque) par ssh -L 172.17.0.1:3307:127.0.0.1:3306 ... (pas testé). L'autre possibilité est d'établir un tunnel SSH à partir de l'intérieur du conteneur.
InformationsquelleAutor Brendenw | 2016-04-01