如何在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脚本中,并将其复制到映像中。