我使用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
答案 0 :(得分:0)
正在执行的curl命令在容器的工作目录中找不到my-dashboards.json
。您可以这样设置路径/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
...
答案 1 :(得分:0)
Elasticsearch和Kibana都启动后,请从主机在具有JSON转储的目录中运行该curl
命令。
以编程方式告诉他们两者都已经启动非常棘手。原则上,您可以通过编写一个ENTRYPOINT脚本来执行类似的操作,该脚本在启动实际服务之前会进行首次设置,但是如果配置位于文件系统中,则操作会更容易(IIRC Kibana实际上将此类数据存储在ES中)。如果您仔细阅读,说官方的mysql映像是这样做的,则它涉及启动服务,等待它真正启动,进行初始化,然后在服务器中的exec "$@"
之前再次停止它。结束。
您无法通过Docker Compose进行所有操作,并且,如果您的首次设置同时依赖于本地主机文件和实际运行的服务,那么尝试不穿鞋可能会更容易-把它塞进去。