Docker compose - 环境变量包含点

Dar*_*rma 5 environment-variables docker docker-compose

一些服务例如。elasticsearch和其他...必须用点设置环境变量,例如:discovery.type=single-node

我想把它归档,什么都不是问题...

    something:
        build: './imagelocation/'
        env_file: 
          - .env
Run Code Online (Sandbox Code Playgroud)

.env 文件包含例如:

EL_ENVIRONMENT=development
discovery.type=single-node
Run Code Online (Sandbox Code Playgroud)

并且“discovery.type=single-node”不起作用,我知道为什么不起作用。

如果没有解决方法,如何解决这个问题?(并且没有安全问题,不想在 docker run -e end 等中使用)

k0s*_*taa 1

我使用 3.7 docker-compose 格式,它工作没有任何问题。但是,请记住,如果 docker-compose 应自动使用它们,则必须env_file:使用docker-compose.yml. 我的服务配置如下:

version: '3.7'
services:
  elasticsearch:
    container_name: elasticsearch
    build: elasticsearch
    image: my-elasticsearch:latest
    ports:
      - "9200:9200"
      - "9300:9300"
    env_file:
      - .env
Run Code Online (Sandbox Code Playgroud)

我的.env文件:

ES_JAVA_OPTS=-Xmx3g -Xms3g
xpack.security.enabled=false
cluster.name=elasticsearch
discovery.type=single-node
Run Code Online (Sandbox Code Playgroud)

在这种情况下,.env文件可以自由命名,因为我们在docker-compose.yml文件中指明了它的名称。

启动容器时,我看到 Elasticsearch 已使用适当的参数启动:

elasticsearch      | [2020-04-22T06:43:36,239][INFO ][o.e.d.DiscoveryModule    ] [K_7KyC-] using discovery type [single-node]
Run Code Online (Sandbox Code Playgroud)

不同的方法

您可以直接使用文件中的参数.env。让我们在.env文件中创建我们自己的参数(使用任何名称):

ES_JAVA_OPTS=-Xmx3g -Xms3g
ES_XPACK_SECURITY_ENABLED=false
ES_CLUSTER_NAME=elasticsearch
ES_DISCOVERY_TYPE=single-node
Run Code Online (Sandbox Code Playgroud)

...并在您的docker-compose.yml文件中使用这些变量,如下所示:

version: '3.7'
services:
  elasticsearch:
    container_name: elasticsearch
    build: elasticsearch
    image: my-elasticsearch:latest
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - ES_JAVA_OPTS=${ES_JAVA_OPTS}
      - xpack.security.enabled=${ES_XPACK_SECURITY_ENABLED}
      - cluster.name=${ES_CLUSTER_NAME}
      - discovery.type=${ES_DISCOVERY_TYPE}
Run Code Online (Sandbox Code Playgroud)

请记住,这次您需要具有.env名称的文件或将此环境导出到您的 shell,例如:export ES_XPACK_SECURITY_ENABLED=true