我无法使用docker compose链接MySQL和播放容器。请参阅下面的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.SQLTimeoutException:等待10001ms后的超时 连接。在 com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:227) 〜[com.zaxxer.HikariCP-java6-2.3.7.jar:na] at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(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.scala:414) 〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.JdbcBackend $ SessionDef $ class.prepareStatement(JdbcBackend.scala:297) 〜[com.typesafe.slick.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:na] 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] at 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.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.StreamingInvokerAction $ HeadOptionAction.run(StreamingInvokerAction.scala:57) 〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.jdbc.StreamingInvokerAction $ HeadOptionAction.run(StreamingInvokerAction.scala:56) 〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.backend.DatabaseComponent $ DatabaseDef $$不久$ 2.liftedTree1 $ 1(DatabaseComponent.scala:237) 〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at slick.backend.DatabaseComponent $ DatabaseDef $$不久$ 2.run(DatabaseComponent.scala:237) 〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 〜[na:1.8.0_111] at java.util.concurrent.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: 通信链路故障
答案 0 :(得分:0)
如上所述here码头链接在某种程度上被网络所取代。
在Docker网络功能之前,您可以使用Docker链接功能来允许容器相互发现。随着Docker网络的引入,容器可以通过其名称自动发现。
默认情况下,撰写文件中的所有容器都会加入默认网络(如果未定义其他网络),并且您应该能够使用servicename和正确的端口访问另一个服务中的一个服务,例如:mySql:3306 < / p>
更多信息可在network docs from docker。
中找到答案 1 :(得分:0)
正确链接到MySQL:
myMc3:
...
links:
- mySql
(没有3306)