### ### BUILD1 STAGE ### FROM ubuntu:18.04 AS build-boost-stage WORKDIR /home/molecuilder # add all packages for boost RUN apt-get update && apt-get install -y \ bzip2 \ cmake \ g++ \ git \ libbz2-dev \ libgsl0-dev \ libblas-dev \ libpython3-dev \ libcppunit-dev \ python3-dev \ python3-numpy \ wget \ && rm -rf /var/lib/apt-get/lists/* # link pyconfig-config as it's used by both boost's bootstrap and boost.m4 to find python # RUN ln -s /usr/bin/python3.6-config /usr/bin/python-config # compile boost libs ADD boost_1_69_0.tar.bz2 . RUN (cd boost_1_69_0 && \ echo "# Configure specific Python version.\nusing python : 3.6m : /usr/bin/python3.6m : /usr/include/python3.6m : /usr/lib/x86_64-linux-gnu ;\n\nusing mpi ;" >user-config.jam && \ ./bootstrap.sh && \ ./b2 \ -j8 \ --build-type=complete \ --build-dir=build64 \ --layout=tagged \ --prefix=/home/molecuilder/_pkgs/boost-1.69 \ --user-config=user-config.jam \ variant=release \ threading=multi \ install) RUN rm -rf boost_1_69_0.tar.bz2 # build molecuilder ### ### BUILD2 STAGE ### FROM ubuntu:18.04 as build-molecuilder-stage WORKDIR /home/molecuilder ENV MOLECUILDER_VERSION 1.7.0 # copy build boost COPY --from=build-boost-stage /home/molecuilder/_pkgs /home/molecuilder/_pkgs # add all packages for boost RUN apt-get update && apt-get install -y \ bzip2 \ cmake \ g++ \ git \ libbz2-dev \ libgsl0-dev \ libblas-dev \ libpython3-dev \ libcppunit-dev \ python3-dev \ wget \ && rm -rf /var/lib/apt-get/lists/* # link pyconfig-config as it's used by both boost's bootstrap and boost.m4 to find python RUN ln -s /usr/bin/python3.6-config /usr/bin/python-config RUN ln -s /home/molecuilder/_pkgs/boost-1.69/lib/libboost_python36-mt-x64.so /home/molecuilder/_pkgs/boost-1.69/lib/libboost_python-mt-x64.so RUN ln -s /home/molecuilder/_pkgs/boost-1.69/lib/libboost_numpy36-mt-x64.so /home/molecuilder/_pkgs/boost-1.69/lib/libboost_numpy3-mt-x64.so ENV ARCHIVE molecuilder-1.7.0.tar.bz2 COPY dependencies_ubuntu18_04.txt . RUN apt-get update && apt-get install -y \ `cat dependencies_ubuntu18_04.txt` \ && rm -rf /var/lib/apt-get/lists/* # update locate db, otherwise pyconfig.h is not found RUN updatedb COPY libqt4-3d*.deb ./ RUN dpkg -i libqt4-3d-dev_1.0-tp2_amd64.deb libqt4-3d_1.0-tp2_amd64.deb COPY $ARCHIVE . #RUN (GIT_SSL_NO_VERIFY=true git clone -b stable https://molecuilder.t3m4.net/git/molecuilder.git molecuilder && \ #RUN (cd molecuilder && \ # git checkout v$MOLECUILDER_VERSION && \ # ./bootstrap) RUN (cp `basename $ARCHIVE` `basename $ARCHIVE | sed -e "s#-#_#" -e "s#\(\.tar\.${suffix}\)#.orig\1#"`) RUN ( tar -jxvf $ARCHIVE && \ cd molecuilder-1.7.0 && \ mkdir -p build64 && \ cd build64 && \ ../configure \ -C \ 'PKG_CONFIG_PATH=' \ 'BOOST_PYTHON_CONFIG=/usr/bin/python3-config' \ '--with-boost=/home/molecuilder/_pkgs/boost-1.69' \ '--enable-jobmarket' \ '--enable-python' \ '--enable-qtgui' \ '--disable-qwt' \ '--enable-vmg' \ '--with-vmg-mpi' \ '--enable-levmar' \ '--disable-valgrind' \ '--enable-action-thread' \ '--disable-debug' \ 'CXXFLAGS=-Wall -g0 -O3' \ 'CXX=mpic++' 'CC=mpicc' 'FC=mpif90' \ '--disable-qtgui-capture-log' \ '--with-default-parallel=none' \ 'PYTHON=/usr/bin/python3' \ 'QT_CFLAGS=-I/usr/share/qt4/include -I/usr/share/qt4/include/Qt -I/usr/share/qt4/include/QtCore -I/usr/share/qt4/include/QtGui' \ 'QT_LDFLAGS=-L/usr/lib/x86_64-linux-gnu -L/usr/lib' \ 'QT_LIBS=-lQtCore -lQtGui -lQtOpenGL -lQt3D' \ '--prefix=/home/molecuilder/_pkgs/molecuilder-1.7.0') RUN (cd molecuilder-1.7.0/build64 && \ make -j8 && \ make install) #RUN (cd molecuilder-1.7.0/ && \ # debuild -j6 -ub -uc) #RUN mv molecuilder-1.7.0/build64/*.deb . && \ # rm -rf molecuilder ### ### DEPLOY STAGE ### FROM ubuntu:18.04 WORKDIR /home/molecuilder RUN apt-get -y update && apt-get install -y \ iproute2 \ libblas3 \ libgfortran3 \ libglvnd0 \ libgsl23 \ liblapack3 \ libopenmpi-dev \ libpython3.6-minimal \ libqt4-opengl \ libqtcore4 \ libqtgui4 \ libqwt5-qt4 \ mpi-default-bin \ openmpi-bin \ openmpi-common \ python3 \ python3-pip \ units \ mesa-utils \ libgl1-mesa-glx COPY --from=build-molecuilder-stage /home/molecuilder/_pkgs ./_pkgs COPY libqt4-3d_1.0-tp2_amd64.deb /tmp COPY run_poolworker.sh /tmp RUN dpkg -i /tmp/libqt4-3d_1.0-tp2_amd64.deb && \ rm -f /tmp/libqt4-3d_1.0-tp2_amd64.deb ENV OMPI_MCA_plm_rsh_agent /bin/false ENV PATH "$PATH:/home/molecuilder/_pkgs/molecuilder-1.7.0" # install for taking screenshots RUN /usr/bin/python3 -m pip install pyscreenshot RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive TZ="Europe/Amsterdam" apt-get -y install tzdata RUN apt -y install libjpeg9-dev zlibc zlib1g-dev gnome-screenshot python3-tk RUN /usr/bin/python3 -m pip install pyautogui RUN mkdir -p /tmp/molecuilder # allow OpenGL to work in dockerized container (start with --privileged) ENV NVIDIA_DRIVER_CAPABILITIES all ENV QT_X11_NO_MITSHM=1 EnV LIBGL_ALWAYS_INDIRECT=1