【问题标题】:Docker pass .env value to config folderDocker 将 .env 值传递给配置文件夹
【发布时间】:2021-10-16 18:44:50
【问题描述】:

这是我的文件夹结构。我设置了密码但不工作。它没有读取值

|-docker-vompose.yml
|- .env
|-config
  |- elasticsearch.yml

.env

ES_PASSWORD=myPassword

elasticsearch.yml

xpack.security.ssl.password:'${ES_PASSWORD}

docker-compose.yml

version: "3.9"
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14
    volumes:
      - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

【问题讨论】:

  • 我已经更正了。但是配置文件没有选择值。如果我放入 docker-compose.yml 正在工作
  • 你能告诉我们你的docker-compose.yml文件吗?您需要在 elasticsearch 服务的 environment 部分中有一个适当的条目。
  • 更新了 docker-compose.yml

标签: docker security elasticsearch docker-compose


【解决方案1】:

您需要更新您的docker-compose.yml 以在您的environment 部分中包含适当的变量声明。如果您希望变量ES_PASSWORD 在您的弹性搜索容器中公开,您可以这样写:

version: "3.9"
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14
    environment:
      - "ES_PASSWORD=${ES_PASSWORD}"
    volumes:
      - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

假设您在 .env 文件中设置了 ES_PASSWORD,这将 将值传递到容器中。

这里假设 elasticsearch 支持环境变量 如您在示例中所示的插值。

【讨论】:

  • 我试过了,但是没有用。我在配置文件中的硬 ode 可以使用密码,但从环境中传递不工作
  • 我也注意到你为什么不使用 - ES_PASSWORD。我使用 - ES_PASSWORD=
  • 是的,这是我的错字。接得好。至于它是否工作,您当然可以docker exec 进入您的容器并查看环境变量是否设置正确。如果是,那么您的问题可能与弹性搜索有关,而不是与 docker 有关。
猜你喜欢
  • 1970-01-01
  • 2018-02-23
  • 2020-05-01
  • 2021-06-03
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
相关资源
最近更新 更多