version: '3'
services:
es01:
container_name: es01
image: elasticsearch:7.14.1
restart: always
environment:
- "ES_JAVA_OPTS=-Xms8g -Xmx8g"
volumes:
- ${ROOT}/es/node1/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ${ROOT}/es/node1/logs/:/usr/share/elasticsearch/logs
- ${ROOT}/es/node1/ik:/usr/share/elasticsearch/plugins/ik
ports:
- 9200:9200
networks:
- es_network
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:7.14.1
restart: always
ports:
- 5601:5601
volumes:
- ${ROOT}/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
//environment:
// ELASTICSEARCH_URL: http://es01:9200
// ELASTICSEARCH_HOSTS: '["http://es01:9200"]'
networks:
- es_network
depends_on:
- es01
networks:
es_network:
driver: bridge
docker-compose 文件是这样的,kibana.yml 里边有配置 elasticsearch.hosts 。 现在是直接在 kibana.yml 文件内修改。现在怎么才能将该参数配置为变量。 在 docker-compose 同时配置 environment 没有生效。只设置 environment 可以生效。
现在需求就是可配置化,即在.env 中可以配置 kibana.yml 的值 这个怎么操作
1
AoEiuV020 2021-10-19 14:44:34 +08:00
一般都是不直接调用 docker-compose,单独开个脚本,脚本里普通的 export 处理参数之类变量,脚本最后调用 docker-compose,
|
2
awanganddong OP @AoEiuV020 现在我是想把其收敛到.env 配置里边
|
3
AoEiuV020 2021-10-19 15:01:53 +08:00
@awanganddong 不管收到哪里,都可以在脚本里读取之后调用 docker-compose,
我想说的是不管 docker-compose 能不能做到,封装一层脚本这个自由度都是大大提升的, |
4
AoEiuV020 2021-10-19 15:07:35 +08:00
@awanganddong 突然感觉有点没明白你是要哪部分可配置,
看你配置文件里有${ROOT}说明应该是知道在 yml 里使用环境变量的吧, 需要变的部分改引用环境变量然后通过脚本读取配置文件传值进来不就可以了, |
5
awanganddong OP @AoEiuV020
这是我在 kibana.yml 里边的配置,直接写死了。 现在要部署一套正式,一套测试,所以想把 elasticsearch.hosts 变成变量。 我直接在 yml 文件把 elasticsearch.hosts 注释,然后在 docker-compose 里边增加 //environment: // ELASTICSEARCH_URL: http://es01:9200 // ELASTICSEARCH_HOSTS: '["http://es01:9200"]' 但是还是不可以, 所以想知道怎么处理。 ``` server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: [ "http://xxx.xxx.xxx.xxx:9200" ] i18n.locale: "zh-CN" ```` |
6
AoEiuV020 2021-10-19 15:36:04 +08:00
@awanganddong 听起来感觉直接 env_file 就可以,
如果不行的话会不会是 kibana 的问题?是否确定过 kibana 读取的是“环境变量”? 如果 kibana 只能读取 yml,那你当然只能在 yml 里配置那个 hosts 了, 需要改的话可以在 kibana 运行前通过 entrypoint 跑个脚本读取环境变量 sed 修改一下 yml 文件, |
7
awanganddong OP @AoEiuV020 这样的话,又复杂了,我打算直接用分支区分正式和测试配置文件。
感谢你的思路 |
8
imherer 2021-10-19 17:10:34 +08:00
看官方文档: https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-docker.html
ELASTICSEARCH_HOSTS 环境变量应该没错 |