如何在 docker-compose.yml 中的命令中使用 `echo` 来处理冒号(“:”)?
How use `echo` in a command in docker-compose.yml to handle a colon (":") sign?
这是我的 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
看来我不能在command
中使用冒号:
,是这样吗?
冒号是 YAML 引入字典的方式。如果你在一个值中有它,你只需要引用这个值,例如这样:
image: "elasticsearch:2.4"
或者使用块标量运算符之一,如下所示:
command: >
/bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml"
有关详细信息,请查看 YAML page on Wikipedia. You can always use something like this online YAML parser 以测试您的 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 脚本中并将其复制到图像中。
这是我的 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
看来我不能在command
中使用冒号:
,是这样吗?
冒号是 YAML 引入字典的方式。如果你在一个值中有它,你只需要引用这个值,例如这样:
image: "elasticsearch:2.4"
或者使用块标量运算符之一,如下所示:
command: >
/bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml"
有关详细信息,请查看 YAML page on Wikipedia. You can always use something like this online YAML parser 以测试您的 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 脚本中并将其复制到图像中。