【问题标题】:How to use command in docker-compose.yml如何在 docker-compose.yml 中使用命令
【发布时间】:2016-10-24 02:53:00
【问题描述】:

这是我的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 中使用符号:,是真的吗?另一个问题是如果我想运行多命令,是在 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"

【问题讨论】:

    标签: docker docker-compose dockerfile docker-machine


    【解决方案1】:

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

    image: "elasticsearch:2.4"
    

    或者通过使用块标量运算符之一,像这样:

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

    有关更多信息,请查看 Wikipedia 上的 YAML 页面。您始终可以使用 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 脚本并将其复制到映像中。

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2016-04-03
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      相关资源
      最近更新 更多