【发布时间】:2017-12-25 00:05:15
【问题描述】:
所以我进退两难了。我制作了一个 Flask 应用程序,当人们登录应用程序时,它使用 mysql DB 来存储用户名和密码。我的问题是,是否有一种动态方法可以在我的 Python 代码中获取 TCP 端口地址?我目前正在做的只是像这样对路径进行硬编码:
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = ''
app.config['MYSQL_DATABASE_DB'] = 'UserList'
app.config['MYSQL_DATABASE_HOST'] = '172.17.0.3'
但我想要使主机动态化,这样如果我构建另一个 mysql 容器,我就不必每次都手动更改 IP。我知道你可以执行这个命令,
env | grep MYSQL
MYSQL_PORT_5123_TCP_ADDR=172.17.0.3
MYSQL_ENV_MYSQL_ROOT_PASSWORD=test
MYSQL_PORT_5123_TCP=tcp://172.17.0.3:5123
MYSQL_PORT_5123_TCP_PROTO=tcp
MYSQL_ENV_GOSU_VERSION=1.7
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_PORT_3306_TCP=tcp://172.17.0.3:3306
MYSQL_PORT_5123_TCP_PORT=5123
MYSQL_ENV_MYSQL_VERSION=5.7.18-1debian8
MYSQL_NAME=/site-metrics/mysql
MYSQL_PORT_3306_TCP_PROTO=tcp
MYSQL_PORT_3306_TCP_ADDR=172.17.0.3
MYSQL_ENV_MYSQL_MAJOR=5.7
MYSQL_PORT=tcp://172.17.0.3:3306
但是有没有办法在我的 Python 脚本中做到这一点,这样我就不必每次都摆弄这个?感谢您的帮助!
【问题讨论】:
-
将它们添加到同一个网络并通过dns引用它们。
-
@johnharris85 你能更深入地解释一下吗?我知道你的意思,但我不确定如果有意义的话我将如何实施。
-
在 docker-compose 中查找
--link参数以获取docker run或使用links部分。这将创建一个您可以联系 mysql 容器的主机名。 -
--link已弃用 @Grimmy 以支持网络。
标签: python mysql ubuntu docker