簡體   English   中英

如何在 docker-compose.yml 中傳遞多行環境變量

[英]How to pass multiline environment variable in docker-compose.yml

我正在嘗試轉換此docker run 命令

docker run -it --rm --name logstash --net test opensearchproject/logstash-oss-with-opensearch-output-plugin:7.16.2 -e 'input { stdin { } } output {
 opensearch {
   hosts => ["https://opensearch:9200"]
   index => "opensearch-logstash-docker-%{+YYYY.MM.dd}"
   user => "admin"
   password => "admin"
   ssl => true
   ssl_certificate_verification => false
   }
}'

到 docker-compose.yml 文件。 但是我不知道如何定義上面傳遞的環境配置。 關於如何將無名多行環境變量傳遞給 docker-compose 的任何建議?

我嘗試了多種 yaml 多行格式,但我不斷得到:

錯誤:環境變量名稱 'input { stdin { } } output { opensearch { hosts ' 可能不包含空格。

碼頭工人-compose.yml:

version: '3'

services:
  logstash-producer:
    image: opensearchproject/logstash-oss-with-opensearch-output-plugin:7.16.2
    container_name: logstash-producer
    environment:
      - 'input { stdin { } } output {
          opensearch {
            hosts => ["https://opensearch:9200"]
            index => "opensearch-logstash-docker-%{+YYYY.MM.dd}"
            user => "admin"
            password => "admin"
            ssl => true
            ssl_certificate_verification => false
          }
        }'

由於-e位在映像名稱之后,因此它是容器的命令。

我從來沒有這樣做過,我無法測試它,但試試這個

version: '3'

services:
  logstash-producer:
    image: opensearchproject/logstash-oss-with-opensearch-output-plugin:7.16.2
    container_name: logstash-producer
    command: |
        -e 'input { stdin { } } output {
        opensearch {
          hosts => ["https://opensearch:9200"]
          index => "opensearch-logstash-docker-%{+YYYY.MM.dd}"
          user => "admin"
          password => "admin"
          ssl => true
          ssl_certificate_verification => false
        }
      }'

如果這不起作用,我會嘗試將命令全部放在一行上。

暫無
暫無

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

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