将运行在docker容器中的tomcat webapp连接到mysql

我有MySQL服务器在Centos主机运行,我想部署我的战争在Tomcatdocker容器在同一主机。 任何想法如何从容器内连接mysql。

这里是你可以做什么从应用程序(tomcat)连接到数据库(MySQL)。 有两种方法可以做到这一点

  1. 通过使用链接
  2. 通过提供数据库的IP地址到tomcat应用程序手动的方式

例子1(链接)

  • 获取你的MySQL容器:

“docker run –name db -e MYSQL_ROOT_PASSWORD =”xxxx“-e MYSQL_DATABASE =”xxxx“-d mysql”

  • 您现在需要构build并运行必须知道db实例在哪里的应用程序容器。 你将不得不弄清楚你在应用程序中提供到数据库的链接。 它可以在代码或属性文件中。 您可以使用卷将该文件安装到应用程序容器中。 您也可以随时修改它们,因为它们可以在主机系统上访问。 这是做这个的一个例子:docker

docker run -d -p 8080:8080 –name app –link db:db -v $ PWD / webapp:/ var / lib / tomcat7 / webapps / app

  • 在这里,我们使用的图像应用程序,我从我的docker基地文件夹挂载webapp文件夹。 这个文件夹有我的代码,我推到tomcat的webapp文件夹。 我也将属性文件推送到mysql连接被提及的容器上的适当位置,如下所示:“jdbc.url = jdbc:mysql:// db:3306 / dbname”。 我们将容器的端口8080映射到主机的端口8080。 我们映射容器数据库与容器应用程序。 这将在/ etc / hosts文件上创build一个条目 – “db ipname”。 所以即使我们重启db容器(改变IP),两个容器也可以相互通信。 链接将用新IP更新主机条目。

例2:

  • 在数据库容器
  • 使用这个“docker inspect -f”{{.NetworkSettings.IPAddress}}“container-name / ID”来获取db容器的IP地址。
  • 使用卷在应用程序容器中,您可以在主机上编辑jdbc URL。
  • 将IP更改为数据库容器的IP,这应该能够build立连接

如果你想使用主机的MySQL

docker运行-d –net =主机 – 名称应用程序图像命令

如果您需要进一步解释,请告诉我。 您可以阅读有关卷的主题,从docker文档链接: https : //docs.docker.com/