如何使用docker-compose文件导入Kibana仪表板?

问题描述 投票:0回答:2

我用cURL命令导出了Kibana仪表板:

curl -XGET localhost:5601/api/kibana/dashboards/export?dashboard=[uuid] > my-dashboards.json

现在我想使用docker-compose导入此仪表板,但是我收到此错误:

test.kibana           | Warning: Couldn't read data from file "my-dashboards.json", this makes an 
test.kibana           | Warning: empty POST.
test.kibana           |   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
test.kibana           |                                  Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed connect to 0.0.0.0:5601; Connection refused

这是docker-compose文件:

version: '2'
services:
  elasticsearch-docker:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.3
    container_name: test.elastic
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
  kibana:
    image: docker.elastic.co/kibana/kibana:5.6.3
    container_name: test.kibana
    command: curl -XPOST test.elastic:5601/api/kibana/dashboards/import -H 'kbn-xsrf:true' -H 'Content-type:application/json' -d @my-dashboards.json
    ports:
      - 5601:5601
    depends_on: 
      - elasticsearch-docker
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
      - ./my-dashboards.json:/usr/share/kibana/config/my-dashboards.json
docker curl docker-compose kibana
2个回答
0
投票

正在执行的curl命令在容器的工作目录中找不到my-dashboards.json。您可以通过在compose文件中设置/usr/share/kibana/config属性来转到路径working_dir

 ...
 kibana:
    image: docker.elastic.co/kibana/kibana:5.6.3
    container_name: test.kibana
    working_dir: /usr/share/kibana/config
 ...

0
投票

一旦Elasticsearch和Kibana都启动了,就在主机上,在具有JSON转储的目录中运行curl命令。

以编程方式告知两者都已启动是非常棘手的。原则上,您可以通过编写ENTRYPOINT脚本来执行此类操作,该脚本在启动实际服务之前进行首次设置,但如果配置位于文件系统中则更容易(IIRC Kibana实际上将此类数据存储在ES中)。如果你仔细阅读,请说官方的mysql图像执行此操作,它涉及启动服务,等待它实际出现,进行初始化,然后在exec "$@"之前再次停止它。

你不能通过Docker Compose做任何事情,如果你的第一次设置依赖于主机本地文件和实际运行的服务,那么可能更容易不尝试使用它。

© www.soinside.com 2019 - 2024. All rights reserved.