|
| 1 | +# Use our Tethyscore base docker image as a parent image |
| 2 | +ARG PYTHON_VERSION=3.12 |
| 3 | +ARG DJANGO_VERSION=3.2 |
| 4 | +ARG TETHYS_VERSION=4.3.7 |
| 5 | +ARG BASE_IMAGE_TAG="${TETHYS_VERSION}-py${PYTHON_VERSION}-dj${DJANGO_VERSION}" |
| 6 | +ARG BASE_IMAGE="tethysplatform/tethys-core" |
| 7 | + |
| 8 | +# Use our Tethys Core base docker image as a parent image |
| 9 | +FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} |
| 10 | + |
| 11 | +# This is necessary for the ARG variables to be available in the rest of the Dockerfile |
| 12 | +ARG PYTHON_VERSION |
| 13 | +ARG DJANGO_VERSION |
| 14 | +ARG TETHYS_VERSION |
| 15 | + |
| 16 | +RUN echo "Python version ${PYTHON_VERSION}" \ |
| 17 | + ; echo "Django version ${DJANGO_VERSION}" \ |
| 18 | + ; echo "Tethys version ${TETHYS_VERSION}" |
| 19 | + |
| 20 | +##################### |
| 21 | +# Default Variables # |
| 22 | +##################### |
| 23 | +ENV TETHYSAPP_DIR=/var/www/tethys/apps |
| 24 | +ENV TETHYSEXT_DIR=/var/www/tethys/exts |
| 25 | +ENV TETHYS_PUBLIC_HOST='localhost' |
| 26 | +ENV JOBS_TABLE_REFRESH_INTERVAL=30000 |
| 27 | +ENV NGINX_PORT=8080 |
| 28 | +ENV APP_DB_HOST=${TETHYS_DB_HOST} |
| 29 | +ENV APP_DB_PORT=${TETHYS_DB_PORT} |
| 30 | +ENV APP_DB_USERNAME=${TETHYS_DB_USERNAME} |
| 31 | +ENV APP_DB_PASSWORD=${TETHYS_DB_PASSWORD} |
| 32 | +######### |
| 33 | +# SETUP # |
| 34 | +######### |
| 35 | +RUN mkdir -p "${TETHYSAPP_DIR}" \ |
| 36 | + ; mkdir -p "${TETHYSEXT_DIR}" \ |
| 37 | + ; mkdir -p "${TETHYS_HOME}/keys" |
| 38 | + |
| 39 | +# Speed up APT installs and Install APT packages |
| 40 | +RUN echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/02apt-speedup \ |
| 41 | + ; echo "Acquire::http {No-Cache=True;};" > /etc/apt/apt.conf.d/no-cache \ |
| 42 | + ; echo "Acquire::Check-Valid-Until false;" > /etc/apt/apt.conf.d/no-check-valid \ |
| 43 | + ; rm -rf /var/lib/apt/lists/* && apt-get update && apt-get -y install gcc libgdal-dev g++ libhdf5-dev && rm -rf /var/lib/apt/lists/* |
| 44 | + |
| 45 | +########### |
| 46 | +# INSTALL # |
| 47 | +########### |
| 48 | +ARG MAMBA_DOCKERFILE_ACTIVATE=1 |
| 49 | +COPY .devcontainer/dev_environment.yml ${TETHYS_HOME}/ |
| 50 | + |
| 51 | +RUN /bin/bash -c "micromamba run -n ${ENV_NAME} python --version; which python" |
| 52 | + |
| 53 | +RUN sed -i "s|^[[:space:]]*- django[^-].*|- django=${DJANGO_VERSION}|" ${TETHYS_HOME}/dev_environment.yml \ |
| 54 | + && if [ "${DJANGO_VERSION}" = "3.2" ]; then \ |
| 55 | + sed -i "s|^[[:space:]]*- django-taggit.*|- django-taggit<5|" ${TETHYS_HOME}/dev_environment.yml; \ |
| 56 | + fi |
| 57 | + |
| 58 | +RUN micromamba install -n ${ENV_NAME} -f ${TETHYS_HOME}/dev_environment.yml --yes \ |
| 59 | + && pip install django-datetime-widget2 \ |
| 60 | + && pip install geoserver-restconfig>=2.0.10 |
| 61 | + |
| 62 | +######################### |
| 63 | +# CONFIGURE ENVIRONMENT # |
| 64 | +######################### |
| 65 | +EXPOSE 8000 |
| 66 | + |
| 67 | +################ |
| 68 | +# COPY IN SALT # |
| 69 | +################ |
| 70 | + |
| 71 | +COPY ../docker/salt/ /srv/salt/ |
| 72 | +COPY .devcontainer/salt/ /srv/salt/ |
| 73 | +COPY .devcontainer/run.sh ${TETHYS_HOME}/ |
| 74 | + |
| 75 | +RUN bash ${TETHYS_HOME}/build-checks.sh |
| 76 | + |
| 77 | +####### |
| 78 | +# RUN # |
| 79 | +####### |
| 80 | +CMD bash run.sh |
| 81 | + |
0 commit comments