Docker install elastic search vm.max_map_count

Hi @andrew.currie ,

are you running docker with nested virtualization on hyper-v? if yes you might need to adjust the settings inside your vm. one approach to this would be to use docker compose to create a kind of init container:

version: "3"

services:
  sonarqube:
    image: sonarqube:7.9.5-community
    depends_on:
      - init
    environment:
      SONARQUBE_JDBC_URL: jdbc:sqlserver://xx.xxx.xx.xx;databaseName=DBName
      SONARQUBE_JDBC_USERNAME: username
      SONARQUBE_JDBC_PASSWORD: password
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_temp:/opt/sonarqube/temp
    ulimits:
      nproc: 131072
      nofile:
        soft: 8192
        hard: 131072
    ports:
      - "9000:9000"
  init:
    image: bash
    privileged: true
    user: root
    volumes:
      - $(pwd)/init.sh:/mnt/init.sh <---- replace the path
    command: ["sh", "-e", "/mnt/init.sh"]
volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_temp:

with init.sh being the commands from the docs:

sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072

the other option (THAT I WOULD NOT RECOMMAND!) would be to disable the elasticsearch startup check using a command like this:

docker run -d --name sonarqube -p 9000:9000 -m 4gb -e SONAR_JDBC_URL=jdbc:sqlserver://xx.xxx.xx.xx;databaseName=DBName -e SONAR_JDBC_USERNAME=username -e SONAR_JDBC_PASSWORD=password -v sonarqube_data:/opt/sonarqube/data -v sonarqube_extensions:/opt/sonarqube/extensions -v sonarqube_logs:/opt/sonarqube/logs sonarqube:7.9.5-community -Dsonar.es.bootstrap.checks.disable=true

hope that helps

4 Likes