繁体   English   中英

如何在Docker撰写文件(docker-compose.yml)中链接容器?

[英]How do I link containers in a docker compose file (docker-compose.yml)?

我无法使用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项目链接。 我收到一个错误:

[错误]-[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] 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:n a]在slick.jdbc.StatementInvoker.iteratorTo(StatementInvoker.scala:slick.jdbc.StatementInvoker.results(StatementInvoker.scala:33)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] 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.Invoker处位于slick.jdbc.StatementInvoker.foreach(StatementInvoker.scala:16)〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na] $ 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 $$不久$ 2.liftedTre e1 $ 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) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)的〜[com.typesafe.slick.slick_2.11-3.1.1.jar:na]〜java.util的[na:1.8.0_111]。 parallel.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网络功能之前,您可以使用Docker链接功能来允许容器彼此发现。 随着Docker网络的引入,可以通过其名称自动发现容器。

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

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

正确链接到MySQL:

myMc3:
  ...
  links:
    - mySql

(没有3306)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM