Skip to content
Snippets Groups Projects
Dockerfile 6.71 KiB
ARG VERSION_PYTHON="3.9"
ARG VERSION_BASE_IMAGE="python:${VERSION_PYTHON}-alpine3.19"
FROM ${VERSION_BASE_IMAGE}
# We need to declare ARGs again which were declared before the build stage
# (FROM directive), otherwise they won't be available in this stage.
ARG VERSION_PYTHON
ARG VERSION_BASE_IMAGE

ARG VERSION_CPP_DICT_PACK="v2.500"
ARG VERSION_PY_MMCIF="0.79"

## Set up environment
ENV MMCIF_DICTS_DIR="/usr/local/share/mmcif-dict-suite" \
    SRC_DIR="/tmp" \
    VERSION_CPP_DICT_PACK=${VERSION_CPP_DICT_PACK} \
    VERSION_BASE_IMAGE=${VERSION_BASE_IMAGE} \
    VERSION_PYTHON=${VERSION_PYTHON} \
    VERSION_PY_MMCIF=${VERSION_PY_MMCIF} \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1


LABEL org.modelarchive.base-image="${VERSION_BASE_IMAGE}"
LABEL org.modelarchive.cpp-dict-pack.version="${VERSION_CPP_DICT_PACK}"
LABEL maintainer="Stefan Bienert <stefan.bienert@unibas.ch>"
LABEL vendor1="Schwede Group (schwedelab.org)"
LABEL vendor2="SIB - Swiss Institute of Bioinformatics (sib.swiss)"
LABEL vendor3="Biozentrum - University of Basel (biozentrum.unibas.ch)"

## Install the RCSB CPP Dict Suite (only the binaries we need)
WORKDIR ${SRC_DIR}
COPY requirements.txt ${SRC_DIR}
RUN set -e pipefail; \
    export DICT_PACK_SRC_DIR="${SRC_DIR}/cpp-dict-pack.git"; \
    apk update; \
    apk upgrade; \
    apk add abuild binutils bison build-base cmake flex git gcc \
            extra-cmake-modules tcsh; \
    #
    ## Install the RCSB mmCIF Dict Suite
    git clone -b ${VERSION_CPP_DICT_PACK} \
              --single-branch --recurse-submodules \
              https://github.com/rcsb/cpp-dict-pack.git \
              ${DICT_PACK_SRC_DIR}; \
    mkdir ${DICT_PACK_SRC_DIR}/build; \
    cd ${DICT_PACK_SRC_DIR}; \
    cd ${DICT_PACK_SRC_DIR}/build; \
    cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON; \
    make; \
    for cif_tool in CifCheck DictToSdb; do \
      mv bin/${cif_tool} /usr/local/bin; \
    done; \
    cd ${SRC_DIR}; \
    rm -r ${DICT_PACK_SRC_DIR}; \
    #
    ## Install the RCSB py-mmcif Python module
    /usr/local/bin/python -m pip install --upgrade pip; \
    /usr/local/bin/python -m pip install mmcif==${VERSION_PY_MMCIF} \
                                         python-rapidjson; \
    /usr/local/bin/python -m pip install -r requirements.txt; \
    #
    ## Clean up/ remove unnecessary stuff
    apk del abuild binutils bison build-base cmake flex git gcc \
            extra-cmake-modules tcsh; \
    apk add libstdc++


## Copy tools/ entrypoint script
COPY --chmod=755 get-mmcif-dict-versions.py \
                 /usr/local/bin/get-mmcif-dict-versions