近日公司需要单节点hbase,并不使用内置zookeeper,我们的zookeeper是单节点的docker化,hbase也要做单节点的docker化,于是以下为自写的Dockerfile
一、hbase的Dockerfile
FROM ubuntu ADD ["jdk.tar.gz","/usr/local/"] ADD ["hbase.tar.gz","/opt/"] COPY ["entrypoint.sh","/"] ENV JAVA_HOME /usr/local/jdk ENV PATH ${PATH}:${JAVA_HOME}/bin RUN echo "Asia/Shanghai" > /etc/timezone EXPOSE 16000 16010 16020 16030 VOLUME /opt/hbase/data ENTRYPOINT /entrypoint.sh
二、hbase的entrypoint.sh
#!/bin/bash Host_Name=`hostname` Conf_Dir=/opt/hbase/conf if [ -n ${ZK_Server} ]; then sed -i "/zookeeper.quorum/{n;s/.*/ <value>${ZK_Server}<\/value>/g}" ${Conf_Dir}/hbase-site.xml fi if [-n ${ZK_Port}]; then sed -i "/zookeeper.property.clientPort/{n;s/.*/ <value>${ZK_Port}<\/value>/g}" ${Confi_Dir}/hbase-site.xml fi bash /opt/hbase/bin/start-hbase.sh tail -F /opt/hbase/logs/hbase--master-${Host_Name}.log
三、hbase的docker-compose文件
version: "3" services: hbase: image: registry.cn-beijing.aliyuncs.com/wavewisdom-bj-registry-common/hbase:2.2.2 container_name: hbase environment: - "ZK_Server=193.168.1.136" - "ZK_Port=2181" ports: - "16000:16000" - "16010:16010" - "16020:16020" - "16030:16030" volumes: - "/home/volumes/hbase/data:/opt/hbase/data" - "/etc/localtime:/etc/localtime:ro" restart: always
四、说明:观察启动日志会发现程序依然会自动binding2181端口,但是hbase和region已经注册到了自建的zookeeper中,测试正常。
原文:https://www.cnblogs.com/caibao666/p/12056219.html