【发布时间】:2021-08-11 04:43:56
【问题描述】:
如何将容器名称传递给 elasticsearch.yml 中的 node.name,而不是将其复制到所有服务名称
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
container_name: es01
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- type: bind
source: ./elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
container_name: es02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- type: bind
source: ./elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
- data02:/usr/share/elasticsearch/data
networks:
- elastic
networks:
elastic:
driver: bridge
elasticsearch.yml
node.name: es01
cluster.name: es-docker-cluster
discovery.seed_hosts: es02,es03
cluster.initial_master_nodes: es01,es02,es03
bootstrap.memory_lock: true
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
因此,我可以使用 node.name=${container_nane} 代替 node.name=es01 吗?
【问题讨论】:
-
我不确定我是否理解正确。首先,您对所有内容使用相同的
elasticsearch.yml文件,因此node.name对所有服务都是相同的。其次,Docker 无法更改外部文件。您的目标可以完成,但需要编写脚本,但这在 Docker 之外。
标签: docker docker-compose elastic-stack