Commit 07c2a022 authored by Robert Butora's avatar Robert Butora
Browse files

docker: entrypoint.sh re-factored by response-format (fits, fits+createfile, vlkb+xml)

parent 6a7626ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@

## MIME-type of the response

# [1]:
# [1] (default):

# default_response_format=application/fits

+13 −9
Original line number Diff line number Diff line
@@ -12,23 +12,29 @@ RUN apt -y update \
                   rabbitmq-server openjdk-17-jre openjdk-17-jdk tomcat9 tomcat9-admin \
                   postgresql-client

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV CATALINA_BASE=/var/lib/tomcat9
ENV CATALINA_HOME=/usr/share/tomcat9
ENV CATALINA_TMPDIR=/tmp

ENV WEBAPP_DIR=/webapps/vlkb-cutout

COPY ast_9.2.9-1_amd64.deb ./
RUN dpkg -i /root/ast_9.2.9-1_amd64.deb && ldconfig \
 && mkdir -p /webapps/vlkb-cutout && mkdir /config \
 && mkdir -p ${WEBAPP_DIR} \
 && mkdir -p /srv/surveys && mkdir -p /srv/cutouts


ARG VLKB_VERSION

COPY vlkb-${VLKB_VERSION}.deb vlkb-obscore-${VLKB_VERSION}.deb vlkbd-${VLKB_VERSION}.deb ./
COPY vlkb-cutout-${VLKB_VERSION}.war /webapps/vlkb-cutout/
COPY vlkb-cutout-${VLKB_VERSION}.war ${WEBAPP_DIR}/
RUN dpkg -i vlkb-${VLKB_VERSION}.deb vlkb-obscore-${VLKB_VERSION}.deb vlkbd-${VLKB_VERSION}.deb \
 && cd /webapps/vlkb-cutout && jar -xf vlkb-cutout-${VLKB_VERSION}.war
 && cd ${WEBAPP_DIR} && jar -xf vlkb-cutout-${VLKB_VERSION}.war
 
# Tomcat must load DB-driver (postgresql_*.jar), vlkb-cutout does not explicitely load DB-drivers
COPY postgresql-*.jar  /var/lib/tomcat9/lib

# Lines with postgresql_*.jar: provide DB-driver so Tomcat loads it
# vlkb-cutout does not explicitely load DB-drivers



# configure instance
@@ -47,9 +53,7 @@ RUN mkdir -p ${INST_DIR}/etc/vlkb-obscore \
COPY config/vlkb-obscore.datasets.conf ${INST_DIR}/etc/vlkb-obscore/datasets.conf
COPY config/vlkbd.datasets.conf ${INST_DIR}/etc/vlkbd/datasets.conf

# created in entrypoint.sh COPY config/servlet.cutout.properties /webapps/vlkb-cutout/WEB-INF/classes/cutout.properties

COPY config/auth.properties config/neatoken.properties config/iamtoken.properties /webapps/vlkb-cutout/WEB-INF/classes/
COPY config/auth.properties config/neatoken.properties config/iamtoken.properties ${WEBAPP_DIR}/WEB-INF/classes/

#COPY ssl/keystore.jks /root/
COPY ssl/server.xml ssl/server-connector-8080.xml ssl/server-connector-8443.xml /etc/tomcat9/
+74 −66
Original line number Diff line number Diff line
@@ -7,28 +7,29 @@ LOG_FILE=/tmp/entrypoint.log
date
whoami
env
#########################################################################
#INST_DIR="/usr/local"
WEBAPP_DIR=/webapps
#CONFIG_DIR=/config
QUEUE_NAME=dockervlkb$ACCESS_CONTEXT_ROOT

#########################################################################
echo "run-time config (compose.yaml):"
echo "SECURITY            : "$SECURITY
echo "VLKBOBSCORE_PG_URI     : "$VLKBOBSCORE_PG_URI
echo "AUTH_DB_*           : "$AUTH_DB_URI" ["$AUTH_DB_SCHEMA"] "$AUTH_DB_USERNAME" / "$AUTH_DB_PASSWORD

echo "ACCESS_CONTEXT_ROOT : "$ACCESS_CONTEXT_ROOT
echo "RESPONSE_FORMAT     : "$RESPONSE_FORMAT
echo "URL_CUTOUTS         : "$URL_CUTOUTS
echo "RESOLVER_DB_*       : "$RESOLVER_DB_URI" ["$RESOLVER_DB_SCHEMA"] "$RESOLVER_DB_USERNAME" / "$RESOLVER_DB_PASSWORD
echo "VLKBOBSCORE_PG_URI  : "$VLKBOBSCORE_PG_URI

echo "build-time config'd (Dockefile):"
echo "INST_DIR   : "$INST_DIR
echo "WEBAPP_DIR : "$WEBAPP_DIR
#echo "CONFIG_DIR : "$CONFIG_DIR
echo "QUEUE_NAME : "$QUEUE_NAME
#########################################################################


echo "JAVA_HOME       : "$JAVA_HOME
echo "CATALINA_BASE   : "$CATALINA_BASE
echo "CATALINA_HOME   : "$CATALINA_HOME
echo "CATALINA_TMPDIR : "$CATALINA_TMPDIR
#########################################################################

## configure vlkb-tools
#mkdir -p $INST_DIR/etc/vlkb-obscore
#cp $CONFIG_DIR/vlkb-obscore.datasets.conf $INST_DIR/etc/vlkb-obscore/datasets.conf
if test -n "$VLKBOBSCORE_PG_URI"
then
   echo "pg_uri=$VLKBOBSCORE_PG_URI" >> $INST_DIR/etc/vlkb-obscore/datasets.conf
@@ -37,59 +38,74 @@ fi


## configure VLKB access
if test -n "$ACCESS_CONTEXT_ROOT"
then

   if test -n "$SECURITY"
   then
      cd $WEBAPP_DIR/vlkb-cutout/WEB-INF/ && rm -f web.xml && cp web-cutout-$SECURITY.xml web.xml && cd -
   fi
cp $WEBAPP_DIR/META-INF/context.xml $CATALINA_BASE/conf/Catalina/localhost/$ACCESS_CONTEXT_ROOT.xml

#   cp $CONFIG_DIR/{auth.properties,neatoken.properties} $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/
   #echo "<Context docBase=\"$WEBAPP_DIR/vlkb-cutout\"/>" > /var/lib/tomcat9/conf/Catalina/localhost/$ACCESS_CONTEXT_ROOT.xml
   cp $WEBAPP_DIR/vlkb-cutout/META-INF/context.xml /var/lib/tomcat9/conf/Catalina/localhost/$ACCESS_CONTEXT_ROOT.xml
   echo "db_uri=$DISCOVERY_DB_URI"  >  $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/authpolicy.properties
   echo "db_schema=datasets"        >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/authpolicy.properties
   echo "db_user_name=$DB_USERNAME" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/authpolicy.properties
   echo "db_password=$DB_PASSWORD"  >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/authpolicy.properties
echo "fits_path_surveys=/srv/surveys" > $WEBAPP_DIR/WEB-INF/classes/cutout.properties

{ # write cutout.properties

   echo "fits_path_surveys=/srv/surveys" > $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   echo "fits_path_cutouts=/srv/cutouts" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   if test -f /srv/surveys/survey_populate.csv
   case $RESPONSE_FORMAT in
      application/fits)
         ;;
      "application/fits;createfile=yes")
         echo "default_response_format=$RESPONSE_FORMAT"
         echo "fits_path_cutouts=/srv/cutouts"
         QUEUE_NAME=dockervlkb$ACCESS_CONTEXT_ROOT
         ;;
      application/x-vlkb*)
         echo "default_response_format=$RESPONSE_FORMAT"
         echo "fits_path_cutouts=/srv/cutouts"
         echo "fits_url_cutouts=$URL_CUTOUTS"
         echo "surveys_metadata_abs_pathname=/srv/surveys/survey_populate.csv"
         QUEUE_NAME=dockervlkb$ACCESS_CONTEXT_ROOT
         echo "default_sky_system=GALACTIC"
         echo "default_spec_system=VELO_LSRK"
         echo "show_duration=yes"
         ;;
   esac

   if test -n "$QUEUE_NAME"
   then
      echo "surveys_metadata_abs_pathname=/srv/surveys/survey_populate.csv" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
      echo "fits_url_cutouts=$URL_CUTOUTS" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
      echo "amqp_host_name=localhost"
      echo "amqp_port=5672"
      echo "amqp_routing_key=$QUEUE_NAME"
   fi
   if test -n "$RESPONSE_FORMAT"

   if test -n "$RESOLVER_DB_URI"
   then
      echo "default_response_format=$RESPONSE_FORMAT" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
      echo "db_uri=$RESOLVER_DB_URI"
      echo "db_schema=$RESOLVER_DB_SCHEMA"
      echo "db_user_name=$RESOLVER_DB_USERNAME"
      echo "db_password=$RESOLVER_DB_PASSWORD"
   fi

   case $RESPONSE_FORMAT in application/x-vlkb*)
      echo "default_sky_system=GALACTIC"   >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
      echo "default_spec_system=VELO_LSRK" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
      echo "show_duration=yes"             >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   esac

   # for resolver (id & extraCards)
   echo "db_uri=$DISCOVERY_DB_URI"  >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   echo "db_schema=datasets"        >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   echo "db_user_name=$DB_USERNAME" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   echo "db_password=$DB_PASSWORD"  >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
} >> $WEBAPP_DIR/WEB-INF/classes/cutout.properties

   echo "amqp_host_name=localhost"     >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   echo "amqp_port=5672"               >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties
   echo "amqp_routing_key=$QUEUE_NAME" >> $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/cutout.properties

   case $RESPONSE_FORMAT in application/x-vlkb*)
if test -n "$QUEUE_NAME"
then
   service rabbitmq-server start
   $INST_DIR/bin/vlkbd_exec.sh localhost $QUEUE_NAME $INST_DIR/etc/vlkbd/datasets.conf
   esac
fi



if test -n "$SECURITY"
then
   cd $WEBAPP_DIR/WEB-INF/ && rm -f web.xml && cp web-cutout-$SECURITY.xml web.xml && cd -
   echo "db_uri=$AUTH_DB_URI"            >  $WEBAPP_DIR/WEB-INF/classes/authpolicy.properties
   echo "db_schema=$AUTH_DB_SCHEMA"      >> $WEBAPP_DIR/WEB-INF/classes/authpolicy.properties
   echo "db_user_name=$AUTH_DB_USERNAME" >> $WEBAPP_DIR/WEB-INF/classes/authpolicy.properties
   echo "db_password=$AUTH_DB_PASSWORD"  >> $WEBAPP_DIR/WEB-INF/classes/authpolicy.properties
fi

# configure access-token validation
if test -f /srv/surveys/iamtoken.properties
then
   cp /srv/surveys/iamtoken.properties $WEBAPP_DIR/WEB-INF/classes/
fi

# configure port/SSL connector: (path is relative to the dir where compose.yaml is
# - web.xml to run filters set above
# * ssl: set tomcat connector with certificates (ia2 needs SECTIGO, iam needs self-signed keystore.jks)
@@ -113,9 +129,7 @@ case $SECURITY in
      echo "Security not configured, runs open."
      ;;
esac



#
#if test -f /srv/surveys/keystore.jks
#then
#   cp /srv/surveys/keystore.jks /root/
@@ -132,12 +146,6 @@ else
   cd /etc/tomcat9/ && ln -s server-connector-8080.xml server-connector.xml && cd -
fi

# configure access-token validation
if test -f /srv/surveys/iamtoken.properties
then
   cp /srv/surveys/iamtoken.properties $WEBAPP_DIR/vlkb-cutout/WEB-INF/classes/
fi


#########################################################################

@@ -145,7 +153,7 @@ date

} 1> $LOG_FILE 2>&1

JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 CATALINA_BASE=/var/lib/tomcat9 CATALINA_HOME=/usr/share/tomcat9 CATALINA_TMPDIR=/tmp /usr/libexec/tomcat9/tomcat-start.sh &
/usr/libexec/tomcat9/tomcat-start.sh &

wait -n