是否有可能在SqlAlchemy中通过名称连接到dockerdb容器?

我有以下docker容器,这两个共享一个networking连接,并execapi ,允许我ping db ,这一点是好的。

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8790d379ddb9 codeinsight/database "/run-database.sh" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp db 88b2022876cc codeinsight/rest-api "python /usr/src/a..." 3 minutes ago Up 3 minutes 3000/tcp, 0.0.0.0:3000->8989/tcp api 

但是,当使用sqlalchemy连接到db (可能不是特定于框架!)时:

 self.engine = create_engine('mysql+pymysql://user_name:password@db:3306/dbname', echo=True) 

除了连接拒绝,我什么也得不到

Can't connect to MySQL server on 'db' ([Errno 111] Connection refused

那么,在定义和build立链接时,是否可以通过容器名称进行连接? 还是我做错了? 对于docker工人来说是全新的,并且乐于听到最佳实践等。谢谢。

可以通过容器名称进行连接。 我想,你需要正确地configurationmysql容器,以允许从你的user_name证书的api主机连接。

你绝对可以连接两个容器,关键是使用links指令。

所以它会是以下语法:

 docker run --links mongo:mongo <rest of your stuff> <image name for python app> 

然后在应用程序中,您只需连接主机mongo