我对码头技术很陌生。实际上,我的任务是创建一个使用坞-合成环境进行持续集成,这是我做的对接-合成,但当运行对接-合成,我仍然会遇到一些错误,如声纳异常:数据库连接失败。实际操作系统是VirtualBox窗口下的oracle。
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 发布于 2017-05-11 20:27:24
您似乎混淆了MySQL数据库的DNS名称和MySQL数据库的名称。在您的示例中,sonarqube映像的JDBC应该是:
jdbc:mysql://mysql:3306/sonardb?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance当您在Docker撰写中创建网络时,该网络中的服务将可用与服务相同的DNS名称。在这种情况下,mysql将解析为MySQL容器的IP地址。您向mysql服务提供的环境变量将创建一个名为sonardb的数据库。
具体参见https://docs.docker.com/compose/networking/#links的链接部分
默认情况下,任何服务都可以以该服务的名称到达任何其他服务。在下面的示例中,可以从主机名db和数据库的web访问db。
https://stackoverflow.com/questions/43924834
复制相似问题