2017-10-08 72 views
0

我有以下码头集装箱,它们都共享一个网络连接,并exec进入api,允许我ping ,这一点很好。是否可以通过SqlAlchemy中的名称连接到docker 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 

然而,在连接时db与SQLAlchemy的(可能是不特定的框架!)有:

self.engine = create_engine('mysql+pymysql://user_name:[email protected]:3306/dbname', echo=True) 

我什么也没得到,但拒绝连接

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

所以,当链接被定义和建立时,是否可以通过容器名称进行连接?或者我做错了吗?对于码头工人来说,这是全新的,并且乐于听到最佳实践等。谢谢。

+0

就个人而言,我不同意关闭投票,因为这是专门询问有关编程框架。 – LokiSinclair

回答

0

可以通过容器名称进行连接。我认为,您需要正确配置mysql容器,以允许api主机与您的user_name凭据连接。

0

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

所以这将会是下面的语法:

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

然后在应用程序,你会简单地与主机相连mongo

+0

不知道 - 链接,将研究,谢谢。 – LokiSinclair

+0

经过仔细检查,这是一个遗留指令,已经超过了分配网络,这是我用过的方法 – LokiSinclair

+0

@LokiSinclair您是否定义了您的网络? –