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

connecting tomcat webapp running in docker container to mysql

我在 centos 主机中有 mysql 服务器 运行,我想在同一主机的 docker 容器内的 tomcat 中部署我的 war。知道如何从容器内部连接 ​​mysql。

这是从应用程序 (tomcat) 连接到数据库 (mysql) 的方法。 有两种方法可以做到这一点

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

示例 1(链接)

  • 启动您的 mysql 容器:

"docker run --name db -e MYSQL_ROOT_PASSWORD="xxxx" -e MYSQL_DATABASE="xxxx" -d mysql"

  • 您现在需要构建 运行 应用程序容器,它必须 知道数据库实例在哪里。你将不得不弄清楚你在哪里 将 link 提供给应用程序中的数据库。它可以在代码中 或者在 属性 文件中。您可以使用 volume 将此文件挂载到 应用程序容器。您还可以在 fly 因为你可以在主机系统上访问它们。这个 是这样做的一个例子:docker

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

  • 这里我们使用图像应用程序,我正在安装 webapp 文件夹 来自我的 docker 基本文件夹。这个文件夹有我的代码,我是 推送到 tomcat 的 webapp 文件夹。我也在推动 properties 文件到容器上的适当位置 mysql 连接是这样提到的: "jdbc.url=jdbc:mysql://db:3306/dbname"。我们正在映射的8080端口 容器到宿主机的8080端口。我们正在映射容器 带有容器应用程序的数据库。这会在 /etc/hosts 文件上创建一个条目 - “db ipname”。所以即使 我们重新启动 db 容器(这会更改 IP)。链接会更新 具有新 IP 的主机条目。

示例 2:

  • 上传数据库容器
  • 使用这个"docker inspect -f '{{ .NetworkSettings.IPAddress }}' container-name/ID"
  • 获取数据库容器的IP
  • 在应用程序容器中添加卷,您可以在主机上编辑 jdbc url。
  • 将IP改为db容器的IP,这样应该可以建立连接

如果你想使用主机的mysql

docker run -d --net=host --name app image command

如果您需要任何进一步的解释,请告诉我。 您可以浏览有关卷的主题,links 来自 docker 文档:https://docs.docker.com/