2017-05-11 6 views
0

私はドッカー技術を初めて使いました。私は実際にドッカーを使用して作成するミッションを持っています。これは継続的な統合のための環境を作っています。ドッカーの作ったものですが、ドッカーを作成するときにソナーの例外などのエラーが発生します。 実際のOSは、VirtualBoxウィンドウの下にあるOracle Linuxです。ドッカーが継続的に統合する

version: '2' 

networks: 
    devnet: 
    driver: bridge 

services: 
nexus: 
    image: sonatype/nexus 
    container_name: nexus 
    ports: 
    - "8081:8081" 
    networks: 
    - devnet 
    volumes: 
    - "/opt/nexus/:/var/lib/nexus" 

jenkins: 
    image: jenkins 
    container_name: jenkins 
    ports: 
    - "8080:8080" 
    networks: 
    - devnet 
    volumes: 
    - "$PWD/jenkins:/var/jenkins_home" 


mongodb: 
    image: mongo 
    networks: 
    - devnet 
    ports: 
    - 8085:8085 
    environment: 
    - MONGODB_USER=root 
    - MONGODB_DATABASE=srsmongodb 
    - MONGODB_PASS=root 
    volumes: 
    - /srv/docker/mongodb:/var/lib/mongodb 
    restart: always 

tomcat: 
    image: tomcat 
    container_name: tomcat 
    networks: 
    - devnet 
    volumes: 
     - ./target/ROOT.war:/usr/local/tomcat/webapps/ROOT.war 
    ports: 
     - 8084:8084 
    restart: always 

sonarqube: 
    image: sonarqube 
    container_name: sonarqube 
    restart: always 
    ports: 
    - "9000:9000" 
    networks: 
    - devnet 
    environment: 
    - SONARQUBE_JDBC_USERNAME=root 
    - SONARQUBE_JDBC_PASSWORD=root 
    - SONARQUBE_JDBC_URL=jdbc:mysql://sonardb:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance 
    volumes: 
    - "/opt/sonar/:/var/lib/sonar" 
    depends_on: 
    - mysql 

mysql: 
    image: mysql 
    networks: 
    - devnet 
    restart: always 
    ports: 
    - 3307:3307 
    tty: true 
    volumes: 
    - /opt/mysql:/var/lib/mysql:rw 
    environment: 
    - MYSQL_ROOT_PASSWORD=root 
    - MYSQL_DATABASE=sonardb 

答えて

2

MySQLデータベースのDNS名とMySQLデータベースの名前を混同しているようです。あなたの例では、sonarqube画像用のJDBC URLは次のようになります。

jdbc:mysql://mysql:3306/sonardb?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance 

あなたがドッカー作曲でネットワークを作成すると、そのネットワーク内のサービスには、サービスと同じであるDNS名で利用できるようになります。この場合、mysqlはMySQLコンテナのIPアドレスに解決されます。 mysqlサービスに提供した環境変数は、sonardbという名前のデータベースを作成します。

https://docs.docker.com/compose/networking/#linksの特別リンクを参照してください:

デフォルトでは、すべてのサービスは、そのサービスの名前で、他のサービスに到達することができます。次の例では、ホスト名dbとデータベースのWebからdbにアクセスできます。

+0

同じエラーが発生しています。 Stacktrace: https://hastebin.com/abodesapes.md –

+0

ああ、それはうまくいった! –

関連する問題