如何链接 docker compose 文件 (docker-compose.yml) 中的容器?

Akh*_*yan 6 docker docker-compose

我无法使用 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
Run Code Online (Sandbox Code Playgroud)

我想将 mysql 与我的 play scala 项目链接起来。我收到错误:

[错误] - [play.core.server.netty.PlayDefaultUpstreamHandler] - 无法调用操作 java.sql.SQLTimeoutException:等待连接 10001 毫秒后超时。在 com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:227) ~[com.zaxxer.HikariCP-java6-2.3.7.jar:na] 在 com.zaxxer.hikari.pool.BaseHikariPool.getConnection( BaseHikariPool.java:182) ~[com.zaxxer.HikariCP-java6-2.3.7.jar:na] 在 com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:93) ~[com.zaxxer.HikariCP-java6 -2.3.7.jar:na] 在 slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:12) ~[com.typesafe.slick.slick-hikaricp_2.11-3.1.1.jar:na] 在 slick .jdbc.JdbcBackend$BaseSession.conn$lzycompute(JdbcBackend.scala:415) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 slick.jdbc.JdbcBackend$BaseSession.conn(JdbcBackend. scala:414) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 slick.jdbc.JdbcBackend$SessionDef$class.prepareStatement(JdbcBackend.scala:297) ~[com.typesafe.slick .slick_2.11-3.1.1.jar:na] 在 slick.jdbc.JdbcBackend$BaseSession.prepareStatement(JdbcBackend.scala:407) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na]在 slick.jdbc.StatementInvoker.results(StatementInvoker.scala:33) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 slick.jdbc.StatementInvoker.iteratorTo(StatementInvoker.scala:22) 〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 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] 在 slick.jdbc.Invoker$class .firstOption(Invoker.scala:24) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 slick.jdbc.StatementInvoker.firstOption(StatementInvoker.scala:16) ~[com.typesafe. slick.slick_2.11-3.1.1.jar:na] 在 slick.jdbc.StreamingInvokerAction$HeadOptionAction.run(StreamingInvokerAction.scala:57) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na ] 在 slick.jdbc.StreamingInvokerAction$HeadOptionAction.run(StreamingInvokerAction.scala:56) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 slick.backend.DatabaseComponent$DatabaseDef$$anon$2 .liftedTree1$1(DatabaseComponent.scala:237) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 slick.backend.DatabaseComponent$DatabaseDef$$anon$2.run(DatabaseComponent.scala:237 ) ~[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_111] 在 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:通信链路故障

her*_*erm 10

正如这里所述,docker 链接在某种程度上被网络取代。

在 Docker 网络功能出现之前,您可以使用 Docker 链接功能来允许容器相互发现。随着 Docker 网络的引入,可以通过名称自动发现容器。

默认情况下,撰写文件中的所有容器都会加入默认网络(如果未定义其他网络),您应该能够使用服务名称和正确的端口从另一服务访问一项服务,例如:mySql:3306

更多信息可以在docker 的网络文档中找到。