使用 docker compose 时使用空格传递 ES_JAVA_OPTS 变量

Nat*_*lch 4 environment-variables elasticsearch docker docker-compose

我正在尝试使用 docker compose 运行 Elasticsearch,但我不确定如何正确传递ES_JAVA_OPTS="-Xms512m -Xmx512m"环境变量。我尝试了很多单引号和双引号的组合,但它们都导致:Error: Could not find or load main class "-Xms512m.

我的 docker-compose 配置是:

elasticsearch:
  image: "docker.elastic.co/elasticsearch/elasticsearch:5.4.3"
  ports:
   - "6379:6379"
  environment:
   - "http.host=0.0.0.0"
   - "transport.host=127.0.0.1"
   - "xpack.security.enabled=false"
   - 'ES_JAVA_OPTS="-Xms512m -Xmx512m"'
Run Code Online (Sandbox Code Playgroud)

当直接使用以下命令运行容器时,此环境变量可以正常工作:

docker run --detach \
  --name elasticsearch \
  --publish 9200:9200 \
  --env "http.host=0.0.0.0" \
  --env "transport.host=127.0.0.1" \
  --env "xpack.security.enabled=false" \
  --env "ES_JAVA_OPTS=""-Xms512m -Xmx512m""" \
  docker.elastic.co/elasticsearch/elasticsearch:5.4.3
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

key*_*one 6

根据https://github.com/docker/compose/issues/2854,这是 docker compose 如何解析您的 env 变量的问题。

如果您切换到 yaml map 而不是 list,它应该可以工作:

elasticsearch:
  image: "docker.elastic.co/elasticsearch/elasticsearch:5.4.3"
  ports:
    - "6379:6379"
  environment:
    http.host: 0.0.0.0
    transport.host: 127.0.0.1
    xpack.security.enabled: "false"
    ES_JAVA_OPTS: -Xms512m -Xmx512m
Run Code Online (Sandbox Code Playgroud)


Erd*_* G. 5

这是 Docker compose 和 space 的问题。

只需替换为

"ES_JAVA_OPTS=-Xmx512m -Xms512m"
Run Code Online (Sandbox Code Playgroud)

请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html