M1 使用 docker 搭建 Es、Kibana、Cerabro 运行环境

1,171 阅读1分钟

环境准备

硬件设备: MacBook Pro M1

Elasticsearch 版本号: 7.13.2

Cerebro: 0.9.4

kibana: 7.13.2

镜像准备

Elasticsearch: docker.elastic.co/elasticsearch/elasticsearch:7.13.2

Kibana: docker.elastic.co/kibana/kibana:7.13.2

Elasticsearch 和 kibana 都是使用官方提供的版本,由于 Cerebro 提供的官方版本是 amd64 的架构,在 M1 芯片的电脑上运行会出现一些奇奇怪怪的问题,所以 cerebro 是使用自己编译的镜像版本

编译 Cerebro 镜像

Cerebro 使用的镜像是基于Cerebro 官方镜像源码编译而来的,Dockerfile 如下:

 # 使用 arm64v8 架构的 jdk11版本
 FROM docker.io/arm64v8/openjdk:11  
 # cerebro 版本号
 ENV CEREBRO_VERSION 0.9.4
 ​
 RUN  apt-get update \
  && apt-get install -y wget \
  && rm -rf /var/lib/apt/lists/* \
  && mkdir -p /opt/cerebro/logs \
  && wget -qO- https://github.com/lmenezes/cerebro/releases/download/v${CEREBRO_VERSION}/cerebro-${CEREBRO_VERSION}.tgz \
   | tar xzv --strip-components 1 -C /opt/cerebro \
  && sed -i '/<appender-ref ref="FILE"/>/d' /opt/cerebro/conf/logback.xml \
  && addgroup -gid 1000 cerebro \
  && adduser -gid 1000 -uid 1000 cerebro \
  && chown -R cerebro:cerebro /opt/cerebro
 ​
 WORKDIR /opt/cerebro
 USER cerebro
 ​
 ENTRYPOINT [ "/opt/cerebro/bin/cerebro" ]

编译镜像:

 docker build -t my-cerebro:0.9.4 .

使用 docker-compose 启动 kibana、Es、Cerebro

docker-compose.yml 文件如下:

 version: '2.2'
 services:
     cerebro:
         image: 'my-cerebro:0.9.4'
         container_name: cerebro
         ports:
             - "9000:9000"
         command:
             - -Dhosts.0.host=http://es01:9200
         networks:
             - elastic
     kibana:
         image: 'docker.elastic.co/kibana/kibana:7.13.2'
         container_name:  kibana
         ports:
             - 5601:5601
         environment:
             - ELASTICSEARCH_HOSTS=http://es01:9200
         networks:
             - elastic
     es01:
         image: 'docker.elastic.co/elasticsearch/elasticsearch:7.13.2'
         container_name: es01
         ports:
             - 9200:9200
             - 9300:9300
         environment:
             - node.name=es01
             - cluster.name=elastic-cluster
             - discovery.seed_hosts=es02
             - cluster.initial_master_nodes=es01,es02
             - bootstrap.memory_lock=true
             - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
         ulimits:
             memlock:
                 soft: -1
                 hard: -1
         volumes:
             - ~/Desktop/development/docker/elk/data/data01:/usr/share/elasticsearch/data
         networks:
             - elastic
     es02:
         image: 'docker.elastic.co/elasticsearch/elasticsearch:7.13.2'
         container_name: es02
         environment:
             - node.name=es02
             - cluster.name=elastic-cluster
             - discovery.seed_hosts=es01
             - cluster.initial_master_nodes=es01,es02
             - bootstrap.memory_lock=true
             - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
         ulimits:
             memlock:
                 soft: -1
                 hard: -1
         volumes:
             - ~/Desktop/development/docker/elk/data/data02:/usr/share/elasticsearch/data
         networks:
             - elastic   
 networks:
     elastic:
        driver: bridge
 

运行 docker-compose 启动集群

 docker-compose up -d 

参考资料:

Cerebro官网:github.com/lmenezes/ce…

Elasticsearch官网:www.elastic.co/guide/en/el…