#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Docker image with Hadoop/JDK/ZK/HIVE/ installed
FROM ubuntu:20.04

# update system tools
RUN apt-get update && apt-get -y install sudo && apt-get -y install wget && apt-get -y install vim

ENV HADOOP_VERSION 3.2.1
ENV ZK_VERSION 3.7.1
ENV HIVE_VERSION 3.1.2
ENV DEBIAN_FRONTEND=noninteractive
ENV HADOOP_HOME /opt/hadoop-$HADOOP_VERSION
ENV HADOOP_CONF $HADOOP_HOME/etc/hadoop
ENV ZK_HOME /opt/apache-zookeeper-$ZK_VERSION-bin
ENV HIVE_HOME /opt/apache-hive-$HIVE_VERSION-bin
ENV PATH $PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:

USER root
CMD /bin/bash
# change workdir to install Hadoop|JDK|Zookeeper|HIVE
WORKDIR /opt

# setup jdk
RUN apt-get -y install openjdk-8-jre \
    && wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.30-1ubuntu20.04_all.deb \
    && dpkg -i mysql-connector-java_8.0.30-1ubuntu20.04_all.deb \
    && cp /usr/share/java/mysql-connector-java-8.0.30.jar /usr/share/java/mysql-connector-java.jar

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64

## install mysql
COPY scripts/install_mysql.sh /opt/
RUN bash /opt/install_mysql.sh

## setup hadoop
RUN wget https://archive.apache.org/dist/hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz \
    && tar -zxf /opt/hadoop-$HADOOP_VERSION.tar.gz \
    && rm -f /opt/hadoop-$HADOOP_VERSION.tar.gz \
    && mkdir -p /data/hadoop
COPY conf/hadoop/* $HADOOP_CONF/

## setup zk
RUN wget https://archive.apache.org/dist/zookeeper/zookeeper-$ZK_VERSION/apache-zookeeper-$ZK_VERSION-bin.tar.gz \
    && tar -zxf /opt/apache-zookeeper-$ZK_VERSION-bin.tar.gz \
    && rm -f /opt/apache-zookeeper-$ZK_VERSION-bin.tar.gz \
    && mkdir -p /data/zookeeper
COPY conf/zk/zoo.cfg $ZK_HOME/conf/

## setup hive
RUN wget https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz \
    && tar -zxf /opt/apache-hive-$HIVE_VERSION-bin.tar.gz \
    && rm -f /opt/apache-hive-$HIVE_VERSION-bin.tar.gz \
    && cp /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib/ \
    && rm -f $HIVE_HOME/lib/guava-19.0.jar \
    && cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/
COPY conf/hive/hive-site.xml $HIVE_HOME/conf/
COPY conf/hive/hive-site.xml $HADOOP_CONF/
