docker-compose:使用相同mysql-instance的2个应用程序

时间:2018-04-04 11:47:54

标签: docker docker-compose

我有两个不同的项目,每个项目都有自己的docker-compose.yml文件。

(1)第一个项目有一个带有App-1 + mysql容器的tomcat容器

(2)第二个项目有一个带有App-2的tomcat容器。

在这个项目中,我想使用与第一个项目相同的数据库。

首先,我将在同一台机器上部署这两个项目,在下一阶段我想将第二个项目移到另一台机器上。

的问候,我

1 个答案:

答案 0 :(得分:0)

@hichamx:

(1)这是我的原始设置,db在同一主机上运行。 (IP = 172.168.10.12)

tomcat:
  image: myimage:v3.1
  ports:
    - "8080:8080"
  environment:
    - VIRTUAL_HOST=domain.local
    - VIRTUAL_PORT=8080
  external_links:
   - db:db

(2)现在我想在第二台主机(ip = 172.168.10.14)上启动数据库,并将端口映射到3306:3306。

tomcat:
      image: myimage:v3.1
      ports:
        - "8080:8080"
      environment:
        - VIRTUAL_HOST=domain.local
        - VIRTUAL_PORT=8080
      external_links: 
        - db:db
        #- lenovo:db # 'service:alias'
      extra_hosts:
        - "lenovo:172.168.10.14"
        - "db:172.168.10.14"

我现在正在172.68.10.14机器上的端口3306上运行数据库(映射到lenovo和db' extra-hosts' ....我似乎只能映射db:我的外部链接中的数据库...)此设置确实有效,我从来没有触及下面的context.xml文件。 (想要理清地图并能够使用' lenovo'或其他名称...)

我的tomcat-application被映射到' db'在context.xml文件中:

<Resource name="jdbc/DBWeb" 
                auth="Container"
                type="javax.sql.DataSource"
                maxActive="100"
                maxIdle="30"
                maxWait="10000"
                validationQuery="SELECT 1"
                testOnBorrow="true"
                username="user" 
                password="secret" 
                driverClassName="com.mysql.jdbc.Driver"
                url="jdbc:mysql://db/personal?useUnicode=true&amp;characterEncoding=utf-8"/>

其中&#39; personal&#39;,在上面的url-string中,将是我的数据库和&#39; db&#39;是数据库的别名(映射在docker-compose.yml文件中)

感谢您帮助@hichamx让我直截了当。