Tuesday, February 7, 2017

Set up mapping in Elasticsearch during Docker run

Leave a Comment

I am going to use official Elasticsearch image. What I want to do is set up the mapping of indexes during Docker run.

So I need to execute right after the container is started.

curl -XPUT localhost:9200/_template/http_request -d {.....}

So I can not do it in Dockerfile or can I?

Thank you

1 Answers

Answers 1

I ended up doing this

docker-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 

and here is my elasticsearch-mapping-init/Dockerfile:

FROM ubuntu  # Install packages RUN apt-get update && \ apt-get install -y curl  COPY docker-entrypoint.sh /  ENTRYPOINT ["/docker-entrypoint.sh"] 

and here is my 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 

I believe this is not perfect, and I'm still looking for a better solution.

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment