Docker + MYSQL: Imansible accedere a mysql al di fuori del contenitore

Ho 2 contenitori docker che contengono mysql database e apro la port 3305, 3306 per ognuno. immettere qui la descrizione dell'immagine

per il contenitore 3306: 3306 posso accedere al di fuori del contenitore entro

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, Numeric, String import os cwd = os.getcwd() import sys sys.path.insert(0, cwd + '/vatic-docker/vatic') #from models import * engine = create_engine('mysql://root:1111' '@172.17.0.2:3306/vatic') Session = sessionmaker (bind = engine) session = Session() Base = declarative_base() 

Tuttavia non posso accedere al database mysql del contenitore 3305: 3306 by

 engine = create_engine('mysql://root:1111' '@172.17.0.3:3306/vatic') 

che mi restituiscono i messaggi di errore:

 sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2003, "Can't connect to MySQL server on '172.17.0.3' (111)") 

Cosa dovrei fare ora?

La port nella string di connessione è errata

Così

 engine = create_engine('mysql://root:1111' '@172.17.0.3:3306/vatic') 

dovrebbe essere

 engine = create_engine('mysql://root:[email protected]<host IP>:3305/vatic') 

poiché 3305 è la port che stai esponendo sulla macchina host

In particolare se la macchina host Docker dispone di un indirizzo IP 192.168.2.100 allora dovrebbe essere la connessione

 engine = create_engine('mysql://root:[email protected]:3305/vatic') 

il formato per -p è hostPort: containerPort

https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port–p—expose