无法通过使用Docker的Spring应用程序连接到MongoDB和MySQL

我使用像下面这样docker-compose.yml来创build容器。 我是新来的,我试图创build一个nginx容器,tomcat容器与spring的应用程序和两个数据库容器(mongo和mysql)。 在Debian服务器上,Spring应用程序工作,所以我认为问题是configurationdocker集装箱。

  nginx: image: nginx links: - web ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf web: image: tomcat:8.0-jre8 links: - mongo - mysql volumes: - ./bint.war:/usr/local/tomcat/webapps/bint.war - ./tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml mongo: image: mongo:2.7 ports: - "27017:27017" mysql: image: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: database MYSQL_USER: user MYSQL_PASSWORD: pass 

我可以连接到mongo和mysql工具,如workbench和robomongo只是使用localhost和默认端口,但spring的应用程序不能。 我正在使用OSX 10.11.5。

 Docker version 1.12.0-rc2, build 906eacd, experimental docker-compose version 1.8.0-rc1, build 9bf6bc6 docker-machine version 0.8.0-rc1, build fffa6c9 

MySql堆栈跟踪

  com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure web_1 | Caused by: java.net.ConnectException: Connection refused web_1 | at java.net.PlainSocketImpl.socketConnect(Native Method) web_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) web_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) web_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) web_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) web_1 | at java.net.Socket.connect(Socket.java:589) web_1 | at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:214) web_1 | at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298) web_1 | ... 58 more 

Mongo栈跟踪

 web_1 | Caused by: org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [int]; nested exception is java.lang.NumberFormatException: For input string: "tcp://172.17.0.3:27017" web_1 | at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:77) web_1 | at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:54) web_1 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1033) web_1 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) web_1 | at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) web_1 | ... 28 more 

你的spring的应用程序将能够连接使用mongo:27017和mysql:3306。 使用localhost:27017和localhost:3306将无法访问。

另一个选项是docker-compose版本2,默认情况下所有容器将共享同一个networking。