docker-compose无法启动

时间:2016-09-05 14:22:55

标签: docker cassandra docker-compose cqlsh

我正在尝试使用docker-compose来启动2张图片   - 作为服务器运行的Apache Cassandra   - 另一个类似的容器,但运行sql解释器

我对Docker很新,这是我到目前为止所尝试的:

这是我的docker-compose.yml

version: '2'
services:
  cassandra-srv:
    image: cassandra:latest
    ports:
     - "7000:7000"
     - "7001:7001"
     - "9042:9042"
     - "7199:7199"
     - "9160:9160"
    container_name: cassandra-srv
  cqlsh:
    build: cassandra-build
    image: cassandra:mycqlsh
    links:
     - cassandra-srv
    container_name: cassandra-client
    depends_on:
     - cassandra-srv
    entrypoint:  /usr/local/bin/wait-for-it.sh cassandra-srv:9042 && cqlsh

这里的想法是我定义了两个服务。我已经打开了比本地机器和其他docker镜像更多的端口。服务器应该启动,启动期间客户端将使用一个小实用程序脚本等待服务器完全启动,然后跳转到交互式shell。为此,通过此Dockerfile调整基本cassandra映像:

FROM cassandra
MAINTAINER jonesn@uk.ibm.com
ENV container docker
WORKDIR /tmp

ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /usr/local/bin
RUN chmod +x /usr/local/bin/wait-for-it.sh

然而,尽管我可以  *启动cassandra图像就好了  *通过在docker调用上直接运行命令,启动相同的映像,但直接进入cqlsh  *构建精致的泊坞窗图像

我不能做的只是运行“docker-compose run cqlsh”,期望这可以构建客户端映像,启动服务器,等待并跳转到shell。

我确信缺乏码头组合知识是原因,有人在乎为这个新手提供一些提示吗? ; - )

由于 佰。

1 个答案:

答案 0 :(得分:0)

我会回答我自己的新手问题

docker-compose up
在给定上述定义的情况下,

足以启动客户端和服务器,此外还需要将入口点行更改为

entrypoint:  /usr/local/bin/wait-for-it.sh -t 300 cassandra-srv:9042 -- cqlsh cassandra-srv 9042

延长超时,并且还为包装器脚本本身启动sql解释器

实际上这也不起作用,因为cqlsh容器将在没有连接终端的情况下退出。使用docker-compose“run”命令似乎是一个更好的选择

docker-compose run cqlsh cqlsh localhost 9042