Docker compose-环境变量包含点



一些服务,例如弹性搜索和其他。。。必须用句点设置环境变量,例如:discovery.type=单节点

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

something:
build: './imagelocation/'
env_file: 
- .env

.env文件包含例如:

EL_ENVIRONMENT=development
discovery.type=single-node

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

如何在没有变通方法的情况下解决这个问题?(并且没有安全问题,不想在docker运行-e端等中使用(

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

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文件中创建自己的参数(使用任何名称(:

ES_JAVA_OPTS=-Xmx3g -Xms3g
ES_XPACK_SECURITY_ENABLED=false
ES_CLUSTER_NAME=elasticsearch
ES_DISCOVERY_TYPE=single-node

并且在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_XPACK_SECURITY_ENABLED=true

最新更新