首页 文章

docker-compose无法启动

提问于
浏览
0

我正在尝试使用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镜像

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

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

谢谢奈杰尔 .

1 回答

  • 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
    

相关问题