Sign inSign up

unidata/thredds-docker

Sponsored OSS

By NSF Unidata

•Updated 7 days ago

Containerized THREDDS Data Server

Image
15

500K+

Dockerfile
###
# Dockerfile for TDS
###

FROM unidata/tomcat-docker:8.5

MAINTAINER Unidata

###
# Usual maintenance
###

USER root

RUN \
    apt-get update && \
    apt-get install -y unzip vim build-essential m4 \
    libpthread-stubs0-dev libcurl4-openssl-dev && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN mkdir /downloads

WORKDIR /downloads

###
# Installing netcdf-c library according to:
# http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/reference/netcdf4Clibrary.html
###

ENV LD_LIBRARY_PATH /usr/local/lib:${LD_LIBRARY_PATH}

ENV HDF5_VERSION 1.10.5

ENV ZLIB_VERSION 1.2.9

ENV NETCDF_VERSION 4.7.2

ENV ZDIR /usr/local

ENV H5DIR /usr/local

ENV PDIR /usr

#zlib dependency
RUN curl https://zlib.net/fossils/zlib-${ZLIB_VERSION}.tar.gz | tar xz && \
    cd zlib-${ZLIB_VERSION} && \
    ./configure --prefix=/usr/local && \
    make && make install

ENV HDF5_VER hdf5-${HDF5_VERSION}
ENV HDF5_FILE ${HDF5_VER}.tar.gz

#hdf5 dependency
RUN curl https://support.hdfgroup.org/ftp/HDF5/releases/${HDF5_VER%.*}/${HDF5_VER}/src/${HDF5_FILE} | tar xz && \
    cd hdf5-${HDF5_VERSION} && \
    ./configure --with-zlib=${ZDIR} --prefix=${H5DIR} --enable-threadsafe --with-pthread=${PDIR} --enable-unsupported --prefix=/usr/local && \
    make && make check && make install && make check-install && ldconfig

#netCDF4-c
RUN export CPPFLAGS=-I/usr/local/include \
    LDFLAGS=-L/usr/local/lib && \
    curl ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-${NETCDF_VERSION}.tar.gz | tar xz && \
    cd netcdf-c-${NETCDF_VERSION} && \
    ./configure --disable-dap-remote-tests --prefix=/usr/local && \
    make check && make install && ldconfig

###
# Grab and unzip the TDS
###

ENV TDS_VERSION 5.0.0-beta8

ENV TDS_CONTENT_ROOT_PATH /usr/local/tomcat/content

# The amount of Xmx and Xms memory Java args to allocate to THREDDS

ENV THREDDS_XMX_SIZE 4G

ENV THREDDS_XMS_SIZE 4G

ENV THREDDS_WAR_URL https://artifacts.unidata.ucar.edu/repository/unidata-releases/edu/ucar/tds/${TDS_VERSION}/tds-${TDS_VERSION}.war

RUN curl -fSL "${THREDDS_WAR_URL}" -o thredds.war

RUN unzip thredds.war -d ${CATALINA_HOME}/webapps/thredds/

###
# Default thredds config
###

RUN mkdir -p ${CATALINA_HOME}/content/thredds

COPY files/threddsConfig.xml ${CATALINA_HOME}/content/thredds/threddsConfig.xml

###
# Tomcat users
###

COPY files/tomcat-users.xml ${CATALINA_HOME}/conf/tomcat-users.xml

###
# Tomcat Java Options
###

COPY files/setenv.sh $CATALINA_HOME/bin/setenv.sh

COPY files/javaopts.sh $CATALINA_HOME/bin/javaopts.sh

RUN chmod 755 $CATALINA_HOME/bin/*.sh

###
# Creating .systemPrefs directory according to
# http://www.unidata.ucar.edu/software/thredds/current/tds/faq.html#javaUtilPrefs
# and as defined in the files/javaopts.sh file
###

RUN mkdir -p ${CATALINA_HOME}/javaUtilPrefs/.systemPrefs

###
# Expose ports
###

EXPOSE 8080 8443

###
# Cleanup
###

WORKDIR ${CATALINA_HOME}

RUN rm -rf /downloads

###
# Inherited from parent container
###

ENTRYPOINT ["/entrypoint.sh"]

###
# Start container
###

CMD ["catalina.sh", "run"]

HEALTHCHECK --interval=10s --timeout=3s \
	CMD curl --fail 'http://localhost:8080/thredds/catalog.html' || exit 1