# Dockerfile for SDK image with ONAP Portal

FROM tomcat:8.5.35-jre8-alpine

# Arguments are supplied by build.sh script
# the defaults below only support testing
ARG SDK_WAR=build/epsdk-app-os.war
ARG HTTP_PROXY
ARG HTTPS_PROXY


# Just variables, never passed in
ARG SDKCONTEXT=ONAPPORTALSDK

ARG TOMCAT=/usr/local/tomcat
ARG TOMCATHOME=${TOMCAT}
ARG SERVERXML=${SERVERXML}

ENV http_proxy $HTTP_PROXY
ENV https_proxy $HTTPS_PROXY
RUN if [ -d /etc/apt ] && [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
    if [ -d /etc/apt ] && [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi


# Remove manager and sample apps
RUN rm -rf ${TOMCAT}/webapps/[a-z]*
RUN mkdir -p /opt
COPY ${SERVERXML} ${TOMCAT}/conf
# TODO: ????
#RUN mv ${TOMCAT} /opt

WORKDIR ${TOMCATHOME}/webapps
RUN mkdir ${SDKCONTEXT}

# Portal has many parts
COPY $SDK_WAR ${SDKCONTEXT}
RUN cd ${SDKCONTEXT} && unzip -q *.war && rm *.war

VOLUME ${TOMCATHOME}/logs

# Switch back to root
WORKDIR /

# Define commonly used ENV variables
ENV PATH $PATH:$JAVA_HOME/bin:${TOMCATHOME}/bin
# Install the launch script
COPY start-apache-tomcat.sh /

# Define default command
ENV TOMCATHOME=$TOMCATHOME
CMD /start-apache-tomcat.sh -b $TOMCATHOME