Docker compose-环境变量包含点

Docker compose-环境变量包含点,docker,docker-compose,environment-variables,Docker,Docker Compose,Environment Variables,一些服务,如elasticsearch和其他。。。必须用点设置环境变量,例如:discovery.type=single node 我想把它归档,没什么问题 something: build: './imagelocation/' env_file: - .env .env文件包含以下内容: EL_ENVIRONMENT=development discovery.type=single-node “discovery.type=

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

我想把它归档,没什么问题

    something:
        build: './imagelocation/'
        env_file: 
          - .env
.env文件包含以下内容:

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


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

我使用3.7 docker compose格式,它可以正常工作。但是,请记住,如果docker compose应自动使用它们,则必须使用
docker compose.yml
中的
env_文件:
属性。 我的服务配置如下:

version: '3.7'
services:
  elasticsearch:
    container_name: elasticsearch
    build: elasticsearch
    image: my-elasticsearch:latest
    ports:
      - "9200:9200"
      - "9300:9300"
    env_file:
      - .env
我的
.env
文件:

ES_JAVA_OPTS=-Xmx3g -Xms3g
xpack.security.enabled=false
cluster.name=elasticsearch
discovery.type=single-node
在本例中,
.env
文件可以自由命名,因为我们在
docker compose.yml
文件中指明了它的名称

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

elasticsearch      | [2020-04-22T06:43:36,239][INFO ][o.e.d.DiscoveryModule    ] [K_7KyC-] using discovery type [single-node]
不同的方法 您可以直接使用
.env
文件中的参数。让我们在
.env
文件中创建自己的参数(使用任何名称):

…并在
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}

请记住,这次您需要将文件命名为
.env
或将此环境导出到shell中,例如:
export-ES\u-XPACK\u-SECURITY\u-ENABLED=true

我使用3.7 docker compose格式,它可以正常工作。但是,请记住,如果docker compose应自动使用它们,则必须使用
docker compose.yml
中的
env_文件:
属性。 我的服务配置如下:

version: '3.7'
services:
  elasticsearch:
    container_name: elasticsearch
    build: elasticsearch
    image: my-elasticsearch:latest
    ports:
      - "9200:9200"
      - "9300:9300"
    env_file:
      - .env
我的
.env
文件:

ES_JAVA_OPTS=-Xmx3g -Xms3g
xpack.security.enabled=false
cluster.name=elasticsearch
discovery.type=single-node
在本例中,
.env
文件可以自由命名,因为我们在
docker compose.yml
文件中指明了它的名称

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

elasticsearch      | [2020-04-22T06:43:36,239][INFO ][o.e.d.DiscoveryModule    ] [K_7KyC-] using discovery type [single-node]
不同的方法 您可以直接使用
.env
文件中的参数。让我们在
.env
文件中创建自己的参数(使用任何名称):

…并在
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}
请记住,这次您需要将文件命名为
.env
或将此环境导出到shell中,例如:
export-ES\u-XPACK\u-SECURITY\u-ENABLED=true