【发布时间】:2020-12-16 14:57:27
【问题描述】:
我正在使用弹性堆栈、elasticsearch logstash 和 kibana 开展一个项目。 现在的目标是使用 docker 来运行堆栈。基于此https://github.com/deviantony/docker-elk,我将 docker-compose 配置为使用我自己的解析运行我自己的管道。
我面临的问题是自动配置(创建索引模板和/或索引)。我知道我调用使用 curl 进行 API 调用,在搜索后我发现了入口点 shell 脚本,我尝试从官方图像复制脚本并在那里添加我的 curl -XPUT 调用,但它不起作用。 所以我的下一个反应是打开 CLI 并输入我的 curl 调用,它工作正常。
所以我的问题是如何在容器启动时自动运行我的 API 调用,我对 docker 和弹性堆栈非常陌生。
谢谢!
编辑:
所以我使用基本的 bash 映像和 curl 在我的 Dockerfile 上使用 RUN 命令安装了它。
现在我在让服务通信时遇到问题(我把它们都放在同一个网络中)我可能做错了,所以我得到了:
curl: (7) Failed to connect to localhost port 9200: Connection refused
编辑:
更新了我的脚本以调用 elasticsearch:9200 而不暴露端口,现在它工作正常!
我也认为脚本没有等待 elasticsearch 完成执行脚本。
这是我的 docker-compose 文件:
version: '3.2'
services:
elasticsearch:
build:
context: elasticsearch/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
- type: volume
source: elasticsearch
target: /usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
ELASTIC_PASSWORD: changeme
# Use single node discovery in order to disable production mode and avoid bootstrap checks.
# see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
discovery.type: single-node
networks:
- elk
configurator:
build:
context: configurator/
networks:
- elk
depends_on:
- elasticsearch
logstash:
build:
context: logstash/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./logstash/config
target: /usr/share/logstash/config
read_only: true
- type: bind
source: ./logstash/pipeline
target: /usr/share/logstash/pipeline
read_only: true
- type: bind
source: ./logstash/data
target: /usr/share/logstash/data
ports:
- "5044:5044"
- "5000:5000/tcp"
- "5000:5000/udp"
- "9600:9600"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- configurator
kibana:
build:
context: kibana/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./kibana/config/kibana.yml
target: /usr/share/kibana/config/kibana.yml
read_only: true
ports:
- "5601:5601"
networks:
- elk
depends_on:
- configurator
networks:
elk:
driver: bridge
volumes:
elasticsearch:
【问题讨论】:
标签: docker elasticsearch docker-compose elastic-stack