如何链接泊坞窗撰写文件(docker-compose.yml)中的容器?

我无法链接MySQL和使用docker撰写容器。 看到下面的yml文件:

zookeeper: image: zookeeper:3.4 ports: - 2181:2181 kafka: image: ches/kafka:latest ports: - 9092:9092 links: - zookeeper myDpm: image: dpm-image:latest ports: - 9000:9000 links: - kafka - zookeeper mySql: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: root myMc3: image: mc3-v3:3.0 ports: - 9001:9000 links: - mySql:3306 environment: runMode: dev myElastic: image: elasticsearch:2.4.0 ports: - 9200:9200 

我想链接mysql与我的play scala项目。 我收到一个错误:

[error] – [play.core.server.netty.PlayDefaultUpstreamHandler] – 无法调用java.sql.SQLTimeoutExceptionexception:等待连接10001ms后超时。 在com.zaxxer.hikari.pool.BaseHikariPool.getConnection(com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:227)〜[com.zaxxer.HikariCP-java6-2.3.7.jar:na] BaseHikariPool.java:182)〜[com.zaxxer.HikariCP-java6-2.3.7.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:93)〜[com.zaxxer.HikariCP-java6 -2.3.7.jar:na] at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:12)〜[com.typesafe.slick.slick-hikaricp_2.11-3.1.1.jar:na] at slick .jdbc.JdbcBackend $ BaseSession.conn $ lzycompute(JdbcBackend.scala:415)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.JdbcBackend $ BaseSession.conn(JdbcBackend。在slick.jdbc.JdbcBackend $ SessionDef $ class.prepareStatement(JdbcBackend.scala:297)〜[com.typesafe.slick(sap):414)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] .slick_2.11-3.1.1.jar:na] at slick.jdbc.JdbcBackend $ BaseSession.prepareStatement(JdbcBackend.scala:407)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:n a] at slick.jdbc.StatementInvoker.results(StatementInvoker.scala:33)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.StatementInvoker.iteratorTo(StatementInvoker.scala: 22)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.Invoker $ class.foreach(Invoker.scala:48)〜[com.typesafe.slick.slick_2.11 -3.1.1.jar:na]在slick.jdbc.StatementInvoker.foreach(StatementInvoker.scala:16)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.Invoker $ class.firstOption(Invoker.scala:24)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.StatementInvoker.firstOption(StatementInvoker.scala:16)〜[com。在slick.jdbc.StreamingInvokerAction $ HeadOptionAction.run(StreamingInvokerAction.scala:57)〜[com.typesafe.slick.slick_2.11-3.1.1.jar :na] at slick.backend.DatabaseComponent $ DatabaseDef $$ slick.jdbc.StreamingInvokerAction $ HeadOptionAction.run(StreamingInvokerAction.scala:56)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na]不久$ 2.liftedTre e1 $ 1(DatabaseComponent.scala:237)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.backend.DatabaseComponent $ DatabaseDef $$ anon $ 2.run(DatabaseComponent.scala:237) 〜java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)〜[na:1.8.0_111]上的java.util〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na]并发.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)〜[na:1.8.0_111]在java.lang.Thread.run(Thread.java:745)〜[na:1.8.0_111]引起:com。 mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

正如这里所说的,docker链接有些被networking取代。

在Dockernetworkingfunction之前,您可以使用Docker链接function来允许容器相互发现。 随着Dockernetworking的引入,容器可以自动被其名称发现。

默认情况下,撰写文件中的所有容器都会join默认networking(如果没有定义其他networking),您应该可以使用servicename和正确的端口访问另一个服务中的一个服务,例如:mySql:3306

更多的信息可以在docker的networking文档中find。

正确链接到MySQL:

 myMc3: ... links: - mySql 

(没有3306)