如何在docker-compose.yml中使用命令

这是我docker-compose.yml

 elasticsearch: ports: - 9200:9200/tcp image: elasticsearch:2.4 volumes: - /data/elasticsearch/usr/share/elasticsearch/data:/usr/share/elasticsearch/data command: /bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 

它只是抛出错误

 Activating (yaml: [] mapping values are not allowed in this context at line 7, column 49 

看来我不能用sign : in command ,这是真的吗? 另一个问题是,如果我想运行多个命令,下面是yml文件吗?

 elasticsearch: ports: - 9200:9200/tcp image: elasticsearch:2.4 volumes: - /data/elasticsearch/usr/share/elasticsearch/data:/usr/share/elasticsearch/data command: -/bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" -/bin/bash -c “echo 'http.cors.allow-origin: "*"' > /usr/share/elasticsearch/config/elasticsearch.yml" 

冒号是YAML如何引入一个字典。 如果你有它的价值,你只需要引用的价值,例如像这样:

 image: "elasticsearch:2.4" 

或者使用其中一个块标量运算符,如下所示:

 command: > /bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 

有关更多信息,请参阅Wikipedia上的YAML页面。 你总是可以使用这个在线的YAMLparsing器来testing你的YAML语法。

正确格式化,你的第一个文件应该是这样的:

 elasticsearch: ports: - 9200:9200/tcp image: "elasticsearch:2.4" volumes: - /data/elasticsearch/usr/share/elasticsearch/data:/usr/share/elasticsearch/data command: > /bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 

(从键的列表标记( - )的缩进不是绝对必要的,但是我发现它帮助使事情更容易阅读)

docker工人容器只能运行一个command 。 如果你想运行多个命令,把它们放在一个shell脚本中,并将其复制到映像中。