Docker容器如何跨主机连接数据库

问题描述:

例如:我要创建一个 sonar 容器,如何使 sonar 连接到不同主机上的数据库。

简单介绍:

下面的代码是目前我在一台主机上运行MySQL和Sonar,如何修改Sonar的启动代码,达到让Sonar和MySQL分布在不同的主机呢?

主机A 启动 MySQL

    docker run \
    -d \
    -p 3307:3306 \
    --name mysql \
    -v /data/mysql/conf:/etc/mysql/conf.d \
    -v /data/mysql/logs:/logs \
    -v /data/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.7

主机A 启动 Sonar

    docker run \
    -d \
    --name sonarqube \
    -p 9000:9000 \
    -p 9092:9092 \
    --link=mysql:mysql \
    -v /data/sonarqube/logs:/opt/sonarqube/logs \
    -v /data/sonarqube/conf:/opt/sonarqube/conf \
    -v /data/sonarqube/data:/opt/sonarqube/data \
    -v /data/sonarqube/extensions:/opt/sonarqube/extensions \
    -e SONARQUBE_JDBC_USERNAME=sonar \
    -e SONARQUBE_JDBC_PASSWORD=sonar \
    -e SONARQUBE_JDBC_URL="jdbc:mysql://10.9.40.121:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
    sonarqube:7.4-community

docker容器桥接网络了解一下

第三方插件flannel 可以帮你实现