2017-05-11 4 views
0

Ich bin neu in der Docker-Technologie. Ich habe eigentlich eine Mission zu erstellen mit Docker-komponieren Sie eine Umgebung für die kontinuierliche Integration, hier ist der Docker-Compose ich gemacht, aber wenn Docker-Compose-up ich immer noch einige Fehler wie Sonar-Ausnahme: Datenbank Verbindung fehlgeschlagen. Actual OS ist Oracle Linux unter VirtualBox Windows.Docker-komponieren kontinuierliche Integration

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 

Antwort

2

Es scheint, als ob Sie den DNS-Namen der MySQL-Datenbank mit dem Namen der MySQL-Datenbank verwechseln. In Ihrem Beispiel soll die JDBC-URL für das sonarqube Bild sein:

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

Wenn Sie ein Netzwerk in Docker Compose erstellen, werden die Dienste innerhalb dieses Netzes durch die DNS-Namen verfügbar sein, die die gleiche wie die Dienstleistung. In diesem Fall wird mysql in die IP-Adresse des MySQL-Containers aufgelöst. Die Umgebungsvariablen, die Sie dem Dienst mysql bereitgestellt haben, erstellen eine Datenbank mit dem Namen sonardb.

Siehe speziell den Abschnitt Links von https://docs.docker.com/compose/networking/#links:

kann standardmäßig jeder Dienst anderen Dienst an diesen anderen Namen erreichen. Im folgenden Beispiel ist db über das Web bei den Hostnamen db und der Datenbank erreichbar.

+0

Immer noch der gleiche Fehler! Stacktrace: https://hastebin.com/abodesapes.md –

+0

Oh vergiss es funktioniert! –

Verwandte Themen