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

weixin_38049770 2019-09-12 11:26:05
我想迁移我的应用程序部署以使用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地址.我想尽量避免这样做. 非常感谢
...全文
34 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38050048 2019-09-12
  • 打赏
  • 举报
回复
你应该使用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的更多信息.

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧