Dockerized Web应用程序连接到主机上的MySQL DB

Dockerized Web应用程序连接到主机上的MySQL DB,第1张

概述我想迁移我的应用程序部署以使用docker / docker hub.当前的生产设置是在两台 Linux服务器之间平衡流量,运行Apache,Tomcat和 MySQL. Java Web应用程序通过JDBC连接到主从MySQL DB. 为了最大限度地减少这种变化的影响,作为第一步,我正在考虑将tomcat和Web应用程序容纳在容器中.让Apache和MySQL像现在一样在主机上运行. 我遇到的问 我想迁移我的应用程序部署以使用docker / docker hub.当前的生产设置是在两台 Linux服务器之间平衡流量,运行Apache,Tomcat和 MySQL. Java Web应用程序通过JDBC连接到主从MysqL DB.

为了最大限度地减少这种变化的影响,作为第一步,我正在考虑将tomcat和Web应用程序容纳在容器中.让Apache和MysqL像现在一样在主机上运行.

我遇到的问题是将在docker容器中运行的应用程序与在主机上运行的MysqL DB连接起来.

我现在能做的最好的事情是连接到docker容器,获取它的IP地址,然后使用sql GRANT来允许该IP地址访问数据库.这样做的问题在于,每次运行容器时,您都可能获得新的IP地址,因此每次都必须运行一个授权.

我一直在玩这个东西一段时间,我不敢相信没有比我上面提出的更好的解决方案.

有人做过这样的事吗?任何人都有任何关于如何最好地解决这个问题的建议.

编辑
有人建议“From inside of a Docker container,how do I connect to the localhost of the machine?”与此重复 – 但潜在的问题仍然存在.每次我从图像创建Docker容器时,我都可能获得需要被授予访问DB的容器的新IP地址.我想尽量避免这样做.

非常感谢

解决方法 你应该使用dockerized MysqL服务器和连接两个容器的Docker链接命令.

首先运行你的MysqL:

docker run –name some-MysqL -e MysqL_ROOT_PASSWORD = my-secret-pw -d MysqL

然后使用链接运行您的应用:

docker run –name some-app –link some-MysqL:MysqL -d app-that-uses-MysqL

现在您可以从环境变量中获取数据库的地址和端口:

docker exec -it some-app printenv

寻找类似的东西:MysqL_PORT_3306_TCP_PORT.现在,您只需在应用中使用这些变量即可.

有关Docker MySQL Repo和Docker docs的更多信息.

总结

以上是内存溢出为你收集整理的Dockerized Web应用程序连接到主机上的MySQL DB全部内容,希望文章能够帮你解决Dockerized Web应用程序连接到主机上的MySQL DB所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1080440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存