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

时间:2015-04-16 15:41:45

标签: docker

我有在centos主机上运行的mysql服务器,我想在同一主机中的docker容器内的tomcat中部署我的战争。任何想法如何从容器内部连接mysql。

1 个答案:

答案 0 :(得分:7)

以下是从App(tomcat)连接到DB(mysql)的方法。 有两种方法可以做到这一点

  1. 使用链接
  2. 通过向tomcat app提供db的IP地址的手动方式
  3. 示例-1(链接)

    • 获取你的mysql容器:
      

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

    • 您现在需要构建并运行必须的应用程序容器 知道db实例在哪里。你必须找出你的位置 提供应用程序中db的链接。它可以在代码中 或在属性文件中。您可以使用卷将此文件装入 应用容器。你也可以修改它们 飞,因为它们可以在主机系统上访问。这个 这样做的一个例子是:docker
      

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

    • 这里我们正在使用图像应用程序,我正在挂载webapp文件夹 从我的docker基本文件夹。这个文件夹是我的代码 推送到tomcat的webapp文件夹。我也在推动 属性文件到容器所在的适当位置 提到mysql连接是这样的: “jdbc.url = jdbc:mysql:// db:3306 / dbname”。我们正在映射8080的端口 容器到主机的端口8080。我们正在映射容器 db with container app。这会在/ etc / hosts文件上创建一个条目 - “db ipname“。因此,即使相关,两个容器也可以相互通信 我们重新启动数据库容器(更改IP)。链接将更新 具有新IP的主机条目。

    示例2:

    • 向上扩展数据库容器
    • 使用此“docker inspect -f'{{.NetworkSettings.IPAddress}}'container-name / ID”
    • 获取数据库容器的IP
    • 使用卷编辑应用容器,您可以在其中编辑主机上的jdbc网址。
    • 将IP更改为db容器的IP,这应该能够建立连接

    如果你想使用Host的mysql

      

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

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