Skip to content

Commit

Permalink
Dockerfile used for various images being regularly used. These files …
Browse files Browse the repository at this point in the history
…have been combined into a single repo for simpler maintainance.
  • Loading branch information
petebunting committed Apr 20, 2020
1 parent bbd3143 commit a4eab2a
Show file tree
Hide file tree
Showing 11 changed files with 573 additions and 0 deletions.
67 changes: 67 additions & 0 deletions au-eoed-dev-gamma/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
FROM ubuntu:latest

LABEL authors="Pete Bunting"
LABEL maintainer="[email protected]"

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH=/opt/miniconda/bin:$PATH

RUN apt-get update --fix-missing && \
apt-get install -y apt-utils wget bzip2 ca-certificates curl git binutils vim libfftw3-dev gnuplot libgtk2.0-dev libgdal-dev libhdf5-dev libhdf5-100 libblas-dev libblas3 liblapack-dev liblapack3 liblapack-doc unzip make && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
/bin/bash ~/miniconda.sh -b -p /opt/miniconda && \
rm ~/miniconda.sh && \
/opt/miniconda/bin/conda clean -tipsy && \
ln -s /opt/miniconda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
echo ". /opt/miniconda/etc/profile.d/conda.sh" >> ~/.bashrc && \
echo "conda activate base" >> ~/.bashrc

# Use python 3.7, update conda base and install AU-EOED software stack
RUN conda install --yes -c conda-forge python=3.7; sync && conda update --yes -n base conda; sync && \
conda install --yes -c au-eoed -c conda-forge python=3.7 eodatadown arcsi rsgislib pb_process_tools sen1-ard-gamma compute-job-recorder scikit-learn scikit-image scikit-optimize scikit-plot scikit-fuzzy bayesian-optimization matplotlib pandas statsmodels h5py scipy rasterio shapely networkx sqlalchemy pycurl xgboost catboost lightgbm tpot seaborn ml_tooling cartopy numba pip sphinx elevation rtree luigi tqdm weasyprint jinja2; sync \
&& chmod +x /opt/miniconda/bin/*; sync \
&& conda clean --all -y; sync \
&& conda clean -tipsy && sync

RUN pip install pyod fiona geopandas schedule gsutil && sync

# set gdal and proj data paths
ENV GDAL_DATA=/opt/miniconda/share/gdal
ENV PROJ_LIB=/opt/miniconda/share/proj

RUN mkdir -p /opt/gamma
WORKDIR /opt/gamma
COPY GAMMA_SOFTWARE-20190613_MSP_ISP_DIFF_LAT.src.tar.gz /opt/gamma/GAMMA_SOFTWARE-20190613_MSP_ISP_DIFF_LAT.src.tar.gz
RUN cd /opt/gamma && tar -zxf /opt/gamma/GAMMA_SOFTWARE-20190613_MSP_ISP_DIFF_LAT.src.tar.gz \
&& rm /opt/gamma/GAMMA_SOFTWARE-20190613_MSP_ISP_DIFF_LAT.src.tar.gz

ENV GAMMA_HOME=/opt/gamma/GAMMA_SOFTWARE-20190613
ENV MSP_HOME=$GAMMA_HOME/MSP \
ISP_HOME=$GAMMA_HOME/ISP \
DIFF_HOME=$GAMMA_HOME/DIFF \
DISP_HOME=$GAMMA_HOME/DISP \
LAT_HOME=$GAMMA_HOME/LAT

ENV PATH=$PATH:$MSP_HOME/bin:$ISP_HOME/bin:$DIFF_HOME/bin:$LAT_HOME/bin:$DISP_HOME/bin:$MSP_HOME/scripts:$ISP_HOME/scripts:$DIFF_HOME/scripts:$LAT_HOME/scripts:$DISP_HOME/scripts \
HDF5_DISABLE_VERSION_CHECK=1 \
GNUTERM=qt \
GAMMA_RASTER="BMP" \
OS=linux64

RUN cd $GAMMA_HOME/DISP/src; make -f makefile_static \
&& cd $GAMMA_HOME/DIFF/src; make -f makefile_static \
&& cd $GAMMA_HOME/ISP/src; make -f makefile_static \
&& cd $GAMMA_HOME/LAT/src; make -f makefile_static \
&& cd $GAMMA_HOME/ISP/src; make -f makefile_static \
&& sync

# Add Tini
ENV TINI_VERSION v0.18.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]

CMD [ "/bin/bash" ]
126 changes: 126 additions & 0 deletions au-eoed-dev-spack/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
FROM ubuntu:18.04

LABEL authors="Pete Bunting"
LABEL maintainer="[email protected]"

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 \
DEBIAN_FRONTEND=noninteractive \
HOME=/home/spack \
SPACK_ROOT=/home/spack/src/spack \
FORCE_UNSAFE_CONFIGURE=1


RUN apt-get -yqq update --fix-missing \
&& apt-get -yqq install build-essential \
ca-certificates \
curl \
g++ \
gcc \
gfortran \
git \
gnupg2 \
make \
python \
unzip \
apt-utils \
autoconf \
bzip2 \
vim \
mercurial \
sudo \
gzip \
tar \
wget \
binutils \
coreutils \
environment-modules \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& ln -s /usr/bin/tclsh8.6 /usr/bin/tclsh


# Add non-privileged, but system docker user with sudo rights
RUN groupadd -r spack -g 901 && \
useradd -u 901 -r -m -g spack spack && \
echo "spack ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/spack && \
chmod 0440 /etc/sudoers.d/spack
# this is also the user that executes all commands below
USER spack
WORKDIR $HOME

COPY packages.yaml .spack/packages.yaml
RUN sudo chown spack:spack -R $HOME

# install spack
RUN mkdir -p $HOME/src/spack \
&& git clone https://github.com/petebunting/spack.git $HOME/src/spack

ENV PATH=$SPACK_ROOT/bin:$PATH

RUN spack install sqlite \
&& spack install openblas \
&& spack install python \
&& spack install cmake \
&& spack install py-numpy \
&& spack install boost \
&& spack install cgal \
&& spack install py-scipy \
&& spack install hdf5 \
&& spack install kealib \
&& spack install gdal \
&& spack install py-h5py \
&& spack install py-chardet \
&& spack install py-urllib3 \
&& spack install py-requests \
&& spack install py-nose \
&& spack install py-matplotlib \
&& spack install py-pandas \
&& spack install py-seaborn \
&& spack install py-rasterio \
&& spack install py-networkx \
&& spack install py-scikit-image \
&& spack install py-scikit-learn \
&& spack install py-tpot \
&& spack install py-ml-tooling \
&& spack install py-pyod \
&& spack install py-xarray \
&& spack install py-statsmodels \
&& spack install py-pycurl \
&& spack install py-sqlalchemy \
&& spack install py-sphinx \
&& spack install py-bokeh \
&& spack install py-pyepsg \
&& spack install py-openpyxl \
&& spack install py-psycopg2 \
&& spack install py-fiona \
&& spack install py-geopandas \
&& spack install py-flask \
&& spack install py-numba \
&& spack install py-rios \
&& spack install py-python-fmask \
&& spack install sixs \
&& spack install py-py6s \
&& spack install py-google-cloud \
&& spack install py-planet \
&& spack install py-opendatacube \
&& spack clean -a

RUN spack install rsgislib \
&& spack install py-arcsi \
&& spack install py-compute-job-recorder \
&& spack install py-eodatadown \
&& spack clean -a


# startup: force the use of a login shell
COPY genentrypoint.sh $HOME/genentrypoint.sh
RUN /bin/bash $HOME/genentrypoint.sh

USER root
RUN mv $HOME/entrypoint.sh /etc/entrypoint.sh \
&& chmod a+x /etc/entrypoint.sh
USER spack

ENTRYPOINT ["/etc/entrypoint.sh"]
CMD ["/bin/bash"]

136 changes: 136 additions & 0 deletions au-eoed-dev-spack/genentrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
#!/bin/bash -l

. /usr/share/modules/init/sh
. /home/spack/src/spack/share/spack/setup-env.sh

spack load python
spack load gdal
spack load sixs
spack load rsgislib
spack load postgresql
spack load hdf5
spack load qhull
spack load sqlite
spack load py-affine
spack load py-alabaster
spack load py-arcsi
spack load py-argparse
spack load py-asn1crypto
spack load py-attrs
spack load py-babel
spack load py-bokeh
spack load py-bottleneck
spack load py-cachetools
spack load py-certifi
spack load py-cftime
spack load py-chardet
spack load py-click
spack load py-click-plugins
spack load py-cligj
spack load py-cloudpickle
spack load py-compute-job-recorder
spack load py-cycler
spack load py-cython
spack load py-dask
spack load py-deap
spack load py-decorator
spack load py-docutils
spack load py-eodatadown
spack load py-et-xmlfile
spack load py-fiona
spack load py-flask
spack load py-geopandas
spack load py-gitdb
spack load py-gitpython
spack load py-google-auth
spack load py-google-cloud
spack load py-google-resumable-media-python
spack load py-h5py
spack load py-idna
spack load py-imagesize
spack load py-itsdangerous
spack load py-jdcal
spack load py-jinja2
spack load py-joblib
spack load py-jsonschema
spack load py-kiwisolver
spack load py-llvmlite
spack load py-locket
spack load py-markupsafe
spack load py-matplotlib
spack load py-ml-tooling
spack load py-munch
spack load py-netcdf4
spack load py-networkx
spack load py-nose
spack load py-numba
spack load py-numexpr
spack load py-numpy
spack load py-opendatacube
spack load py-openpyxl
spack load py-packaging
spack load py-pandas
spack load py-partd
spack load py-patsy
spack load py-pillow
spack load py-pkgconfig
spack load py-planet
spack load py-protobuf
spack load py-psycopg2
spack load py-py6s
spack load py-pyasn1
spack load py-pycurl
spack load py-pyepsg
spack load py-pygments
spack load py-pyod
spack load py-pyparsing
spack load py-pypeg2
spack load py-pyproj
spack load py-pysolar
spack load py-python-dateutil
spack load py-python-fmask
spack load py-pytz
spack load py-pywavelets
spack load py-pyyaml
spack load py-rasterio
spack load py-requests
spack load py-rios
spack load py-rsa
spack load py-scikit-image
spack load py-scikit-learn
spack load py-scipy
spack load py-seaborn
spack load py-setuptools
spack load py-setuptools-scm
spack load py-shapely
spack load py-six
spack load py-smmap
spack load py-snowballstemmer
spack load py-snuggs
spack load py-sphinx
spack load py-sphinx-rtd-theme
spack load py-sphinxcontrib-websupport
spack load py-sqlalchemy
spack load py-statsmodels
spack load py-stopit
spack load py-toolz
spack load py-tornado
spack load py-tpot
spack load py-tqdm
spack load py-urllib3
spack load py-vcversioner
spack load py-werkzeug
spack load py-xarray
spack load python

echo "#!/bin/bash -l" > /home/spack/entrypoint.sh
echo ". /home/spack/src/spack/share/spack/setup-env.sh" >> /home/spack/entrypoint.sh
echo "export PATH=$PATH" >> /home/spack/entrypoint.sh
echo "export PYTHONPATH=$PYTHONPATH" >> /home/spack/entrypoint.sh
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> /home/spack/entrypoint.sh
echo "export MANPATH=$MANPATH" >> /home/spack/entrypoint.sh
echo "export LIBRARY_PATH=$LIBRARY_PATH" >> /home/spack/entrypoint.sh
echo "export CPATH=$CPATH" >> /home/spack/entrypoint.sh
echo "export PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> /home/spack/entrypoint.sh
echo "export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH" >> /home/spack/entrypoint.sh
echo 'exec "$@"' >> /home/spack/entrypoint.sh
21 changes: 21 additions & 0 deletions au-eoed-dev-spack/packages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
packages:
python:
version: [3.7.4]
variants: +shared+tkinter+uuid
py-numpy:
variants: ^openblas
hdf5:
variants: +cxx+hl+shared~mpi
netcdf:
variants: ~mpi
py-h5py:
variants: ~mpi
gdal:
version: [3.0.1]
variants: +python+qhull+sqlite3+armadillo+geos+kea+hdf5+openjpeg+pg+netcdf
libsigcpp:
version: [2.9.3]




43 changes: 43 additions & 0 deletions au-eoed-dev/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM ubuntu:latest

LABEL authors="Pete Bunting"
LABEL maintainer="[email protected]"

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH=/opt/miniconda/bin:$PATH

RUN apt-get update --fix-missing && \
apt-get install -y apt-utils wget bzip2 ca-certificates curl git binutils vim make && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
/bin/bash ~/miniconda.sh -b -p /opt/miniconda && \
rm ~/miniconda.sh && \
/opt/miniconda/bin/conda clean -tipsy && \
ln -s /opt/miniconda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
echo ". /opt/miniconda/etc/profile.d/conda.sh" >> ~/.bashrc && \
echo "conda activate base" >> ~/.bashrc

# Use python 3.7, update conda base and install AU-EOED software stack
RUN conda install --yes -c conda-forge python=3.7; sync && conda update --yes -n base conda; sync && \
conda install --yes -c au-eoed -c conda-forge python=3.7 eodatadown arcsi rsgislib pb_process_tools sen1-ard-gamma compute-job-recorder scikit-learn scikit-image scikit-optimize scikit-plot scikit-fuzzy bayesian-optimization matplotlib pandas statsmodels h5py scipy rasterio shapely networkx sqlalchemy pycurl xgboost catboost lightgbm tpot seaborn ml_tooling cartopy numba pip sphinx elevation rtree luigi tqdm weasyprint jinja2 keras keras-preprocessing pytables parallel plotly bokeh pygal jupyterlab psutil; sync \
&& chmod +x /opt/miniconda/bin/*; sync \
&& conda clean --all -y; sync \
&& conda clean -tipsy && sync

RUN pip install pyod fiona geopandas schedule gsutil cvxopt dropbox && sync

# set gdal and proj data paths
ENV GDAL_DATA=/opt/miniconda/share/gdal
ENV PROJ_LIB=/opt/miniconda/share/proj

# Add Tini
ENV TINI_VERSION v0.18.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]

CMD [ "/bin/bash" ]


Loading

0 comments on commit a4eab2a

Please sign in to comment.