ARG BASE_VERSION
FROM registry.gitlab.com/rychly-edu/docker/docker-hadoop-hbase-base:${BASE_VERSION:-alpine-latest}

MAINTAINER Marek Rychly <marek.rychly@gmail.com>

# https://github.com/Merck/Halyard/releases
ARG HALYARD_VERSION=3.0

ARG DOWNLOAD_CACHE

ENV \
HALYARD_HOME="/opt/halyard" \
HALYARD_USER="halyard"

COPY scripts /

RUN true \
# make the scripts executable
&& chmod 755 /*.sh \
# sed: scripts to set HBase/Hadoop/Halyard properties in files require GNU sed (the usage of busybox sed may result into incorrect outputs)
&& apk add --no-cache --update attr sed \
\
# download the package
&& ( [ -n "${DOWNLOAD_CACHE}" ] && cp -v "${DOWNLOAD_CACHE}/halyard-sdk-${HALYARD_VERSION}.zip" /tmp \
	|| wget -O "/tmp/halyard-sdk-${HALYARD_VERSION}.zip" "https://github.com/Merck/Halyard/releases/download/r${HALYARD_VERSION}/halyard-sdk-${HALYARD_VERSION}.zip" ) \
\
# extract the package and remove garbage
&& mkdir -p "${HALYARD_HOME}" \
&& unzip -q "/tmp/halyard-sdk-${HALYARD_VERSION}.zip" -d "${HALYARD_HOME}" \
\
# patch: sh->bash, static paths, file permissions
&& sed -i \
-e "s|^#!/bin/sh\$|#!/usr/bin/env bash|g" \
-e "s|/etc/hbase/conf|${HBASE_CONF_DIR}|g" \
-e "s|^lib=.*\$|lib=${HALYARD_HOME}/lib|g" \
-e "s|^halyard_home=.*\$|halyard_home=${HALYARD_HOME}|g" \
"${HALYARD_HOME}/console" "${HALYARD_HOME}/halyard" \
&& chmod 644 ${HALYARD_HOME}/*.xml \
\
# set up Halyard permissions
&& addgroup -S "${HALYARD_USER}" \
&& adduser -h "${HALYARD_HOME}" -g "Halyard" -s /bin/bash -G "${HALYARD_USER}" -S -D -H "${HALYARD_USER}" \
&& chown -R "${HALYARD_USER}:${HALYARD_USER}" "${HALYARD_HOME}" \
\
# set Java and Halyard path for the login shell
&& echo '#!/bin/sh' > /etc/profile.d/path-halyard.sh \
&& echo "export PATH=\"\${PATH}:${JAVA_HOME}/bin:${HALYARD_HOME}\"" >> /etc/profile.d/path-halyard.sh \
&& chmod 755 /etc/profile.d/path-halyard.sh \
\
# clean up
&& rm -rf /tmp/* /var/tmp/* /var/cache/apk/*

ENTRYPOINT ["/entrypoint.sh"]
