簡體   English   中英

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

[英]How to use command in 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頁面。 你總是可以使用類似這樣的在線 YAML 解析器來測試你的 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 腳本中並將其復制到映像中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM