如何将此docker命令转换为docker-compose?

时间:2018-02-14 19:09:46

标签: docker docker-compose

我手动运行此命令:

$ docker run -it --rm \
    --network app-tier \
    bitnami/cassandra:latest cqlsh --username cassandra --password cassandra cassandra-server

但我不知道如何将其转换为docker compose文件,特别是容器的自定义属性,例如--username--password

我应该在docker-compose.yaml文件中写什么来获得相同的结果?

由于

3 个答案:

答案 0 :(得分:2)

示例cassandra docker-compose.yml可能是

<?php
$clean = [];

if (isset($_POST['data_submitted'])){ 

 // one way to deal with possibly tainted data
 $clean['name'] =  htmlentities($_POST['name']);
 $clean['ppsn'] =  htmlentities($_POST['ppsn']);
 $clean['pin']  =  htmlentities($_POST['pin']);
 $clean['dob']  =  htmlentites($_POST['dob']);


 $employee = implode(",",$clean);
 echo "employee = $employee";
}

虽然这不会为您提供命令行参数,但会使用默认的CMD或ENTRYPOINT启动它。

当您实际运行另一个命令时,默认情况下您可能不希望使用docker-compose执行此操作。或者您可以使用此命令创建新的Docker镜像作为默认值,并提供用户名和密码作为ENV的

e.g。像这样(未经测试)

version: '2'

services:
  cassandra:
    image: 'bitnami/cassandra:latest'
    ports:
      - '7000:7000'
      - '7001:7001'
      - '9042:9042'
      - '9160:9160'
    volumes:
      - 'cassandra_data:/bitnami'
volumes:
  cassandra_data:
    driver: local

你可以建立它

FROM bitnami/cassandra:latest

ENV USER=cassandra
ENV PASSWORD=password

CMD ["cqlsh", "--username", "$USER", "--password", "$PASSWORD", "cassandra-server"]

并运行类似:

docker build -t mycassandra .

或在docker-compose中

docker run -it -e "USER=foo" -e "PASSWORD=bar" mycassandra

答案 1 :(得分:1)

以下是其他人如何做到这一点的示例。 http://abiasforaction.net/apache-cassandra-cluster-docker/

运行以下命令

function minus(){
    count--;
    countEl.value = count;
}

在下面设置arg

command:

请记住,因为你并不意味着你应该这样做。撰写并不总是最好的推出方式。通常它可能是懒惰的方式。

如果您将此作为服务ID运行,则建议构建dockerfile以启动,然后创建systemd / init脚本以重新启动它。

答案 2 :(得分:1)

您可能会寻找以下内容。不确定它是否会帮助你......

    version: '3'
    services:
      my_app:
        image: bitnami/cassandra:latest
        command: /bin/sh -c cqlsh --username cassandra --password cassandra cassandra-server
        ports:
         - "8080:8080"
        networks:
         - app-tier
    networks:
     app-tier:
      external: true