Elasticsearch docker container in non-prod mode to eliminate vm.max_map_count=262144 requirement

后端 未结 3 517
臣服心动
臣服心动 2020-11-29 13:10

How can I configure elasticsearch docker containers (elasticsearch:7.5.0) to use fewer resources and run in a nonproduction mode?

I want to run containers in Jenkins

相关标签:
3条回答
  • 2020-11-29 13:16

    You can run your docker in development mode and create a single node ES cluster by following official ES link on single node ES cluster. As mention in this link.

    To start a single-node Elasticsearch cluster for development or testing, specify single-node discovery to bypass the bootstrap checks:

    In-short all you need to do is add -e "discovery.type=single-node" in your docker command, which would enable the dev mode and then you don't have to satisfy the hard limits of production environments ie it bypass bootstrap checks.

    More information on your settings and how to turn it off can be found here

    node.store.allow_mmap. This is a boolean setting indicating whether or not memory-mapping is allowed. The default is to allow it.

    So, if -e "discovery.type=single-node env. doesn't turn it off, then you can explicitly set it false in your elasticsearch.yml.

    0 讨论(0)
  • 2020-11-29 13:27

    If you're reading this trying to find out how to do it when using docker-compose:

    With an environment key

    docker-compose.yml:

      elasticsearch:
        environment:
          - discovery.type=single-node
    

    With a custom elasticsearch.yml

    Create elasticsearch.yml:

    discovery:
      type: single-node
    

    Mount it as a volume on your container in docker-compose.yml:

      elasticsearch:
        volumes:
          - /path-to/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    

    Make sure the first part actually a path, it has to start with / or ./ or else it's going to treat it as a named volume. The second part is the path inside the container so it can be left as is.

    The file must be in a location you've enabled File Sharing for in your Docker application. Set this up in Preferences > Resources > File Sharing if you haven't.

    0 讨论(0)
  • 2020-11-29 13:34

    I have also faced this issue when I was using this docker.elastic.co/elasticsearch/elasticsearch:7.6.2 elastic-search docker image for a single node cluster.

    The error I was getting is:

    ERROR: [1] bootstrap checks failed
    [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
    

    To start a single-node Elasticsearch cluster with Docker

    Solution1

    So the solution would be to run a docker image with an environment variable -e "discovery.type=single-node" in docker run command.

    docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    

    Solution2

    Add this "discovery.seed_hosts : 127.0.0.1:9300" in eleasticsearch.yml file. And build your own docker image and use it.

    Dockerfile will look like this.

    FROM docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    RUN echo discovery.seed_hosts : 127.0.0.1:9300 >> /usr/share/elasticsearch/config/elasticsearch.yml 
    RUN cat /usr/share/elasticsearch/config/elasticsearch.yml
    

    For more details click here.

    0 讨论(0)
提交回复
热议问题