12
我將使用官方Elasticsearch映像。我想要做的是在Docker運行期間設置索引的映射。在Docker運行期間在Elasticsearch中設置映射
所以我需要在容器啓動後立即執行。
捲曲-XPUT本地主機:9200/_template/HTTP_REQUEST -d {} .....
所以我不能做到這一點在Dockerfile或可以嗎?
謝謝
我將使用官方Elasticsearch映像。我想要做的是在Docker運行期間設置索引的映射。在Docker運行期間在Elasticsearch中設置映射
所以我需要在容器啓動後立即執行。
捲曲-XPUT本地主機:9200/_template/HTTP_REQUEST -d {} .....
所以我不能做到這一點在Dockerfile或可以嗎?
謝謝
我終於實現了這個
泊塢窗,composer.yml
version: '2'
services:
elasticsearch:
image: elasticsearch:2.3
command: elasticsearch -Des.network.host=0.0.0.0
ports:
- "9200:9200"
- "9300:9300"
elasticsearch-mapping-init:
build: elasticsearch-mapping-init
links:
- elasticsearch
depends_on:
- elasticsearch
,這裏是我的elasticsearch映射-INIT/Dockerfile:
FROM ubuntu
# Install packages
RUN apt-get update && \
apt-get install -y curl
COPY docker-entrypoint.sh/
ENTRYPOINT ["/docker-entrypoint.sh"]
這裏是我的elasticsearch-mapping-init/docker-entrypoint.sh
#!/bin/bash
for i in {30..0}; do
if curl elasticsearch:9200; then
curl -XPUT elasticsearch:9200/_template/log -d '
{
"template" : "log-*",
"settings": {
"number_of_shards": 1
},
"mappings" : {
}
}';
break;
fi
sleep 2
done
我相信這並不完美,我仍然在尋找更好的解決方案。
您可以在單個官方elasticsearch圖片中執行所有操作。您可以使用FROM elasticsearch將其添加到您自己的dockerfile中的docker-entrypoint.sh中。這是他們現在爲最新的ES所做的:https://github.com/docker-library/elasticsearch/blob/ffaaf3283e47dcb732e90288a58757b87a8439a7/5/docker-entrypoint.sh –
@BretFisher你能給我更多的信息嗎?我仍然不知道在官方ES鏡像中如何去做。 –
它可能不是完美的答案,因爲'depend_on'不會等待elasticsearch服務做好準備。它將等待elasticsearch開始。因此init-service可以在elasticsearch正在啓動時啓動,但尚未完全運行。 –