是否可以在SqlAlchemy中按名称连接到docker db容器?

时间:2017-10-08 12:52:59

标签: python mysql docker sqlalchemy

我有以下docker容器,它们共享一个网络连接,exec进入api,允许我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

那么,在定义和建立链接时,是否可以通过容器名称进行连接?或者我做错了吗?对于码头工具来说是全新的,并且会很高兴地听到最佳实践等等。谢谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

所以它是以下语法:

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

然后在应用上,您只需与主持人mongo

联系