You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
3.2 KiB

FROM movesrwth/storm-basesystem:ubuntu-22.04 as build
#COPY ./tempest-devel /opt/tempest
#COPY ./tempest-py /opt/tempestpy
COPY ./pycarl-2.0.4 /opt/pycarl
COPY ./carl /opt/carl
# RUN rm -r /opt/tempest/.git
# RUN rm -r /opt/tempestpy/.git
# RUN rm -r /opt/Minigrid2PRISM/.git
RUN apt-get update
RUN apt-get install -y python3.10
# Specify number of threads to use for parallel compilation
# This number can be set from the commandline with:
# --build-arg no_threads=<value>
ARG no_threads=6
# Build carl
RUN mkdir -p /opt/carl/build
WORKDIR /opt/carl/build
RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_CLN_NUMBERS=ON -DUSE_GINAC=ON
RUN make lib_carl -j $no_threads
# Build tempest
RUN git clone -b tempestpy_adaptions https://git.pranger.xyz/sp/tempest.git /opt/tempest
RUN mkdir -p /opt/tempest/build
WORKDIR /opt/tempest/build
RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DSTORM_DEVELOPER=OFF -DSTORM_LOG_DISABLE_DEBUG=ON -DSTORM_PORTABLE=OFF -DSTORM_USE_SPOT_SHIPPED=ON
RUN make resources storm binaries -j $no_threads
RUN apt-get install -y maven
RUN apt-get install -y uuid-dev
# COPY ./carl-parser /opt/carl-parser
# # Switch to build directory
# RUN mkdir -p /opt/carl-parser/build
# WORKDIR /opt/carl-parser/build
# Configure carl-parser
RUN cmake .. -DCMAKE_BUILD_TYPE=$build_type
# Build carl-parser
# RUN make carl-parser -j $no_threads
# Manage python packages
WORKDIR /opt/
RUN apt-get install -y python3-venv
# Python env handling
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN apt-get install -y python3-pip
# build pycarl
WORKDIR /opt/pycarl
RUN python setup.py build_ext -j $no_threads
RUN pip install .
# build tempestpy
RUN git clone -b refactoring https://git.pranger.xyz/sp/tempestpy.git /opt/tempestpy
WORKDIR /opt/tempestpy
RUN python3 setup.py build_ext --storm-dir /opt/tempest/ -j $no_threads develop
# build yaml-cpp
COPY ./yaml-cpp /opt/yaml-cpp
RUN mkdir -p /opt/yaml-cpp/build
WORKDIR /opt/yaml-cpp/build
RUN cmake .. -DCMAKE_BUILD_TYPE=Release
RUN make -j $no_threads
RUN make install -j $no_threads
COPY ./Minigrid2PRISM /opt/Minigrid2PRISM
# build minigrid to prism
RUN mkdir -p /opt/Minigrid2PRISM/build
WORKDIR /opt/Minigrid2PRISM/build
RUN cmake ..
RUN make -j $no_threads
# build minigrid
#COPY ./Minigrid /opt/Minigrid
#RUN rm -r /opt/Minigrid/.git
#WORKDIR /opt/Minigrid
#RUN pip install .
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
WORKDIR /opt/tempestpy
RUN pip install -U "ray[all]==2.6.3"
RUN pip install dm-tree
RUN pip install opencv-python
RUN pip install scikit-image
RUN pip install torch
RUN pip install tensorboard
RUN pip install tensorboardX
RUN pip install gymnasium
RUN pip install tensorflow
RUN pip install jupyterlab
RUN pip install astar
RUN pip install ipywidgets
RUN pip install numpy
RUN pip install matplotlib
RUN pip install sb3-contrib
RUN pip install opencv-python
RUN pip install moviepy
ENV M2P_BINARY=/opt/Minigrid2PRISM/build/main
# We mount the Minigrid directory here manually again, to be able to have the directory hosted in the jupyter notebook
CMD ["pip", "install", "-e", "/opt/Minigrid"]
ENTRYPOINT ["jupyter", "lab","--ip=0.0.0.0","--allow-root", "--notebook-dir=/opt/notebooks"]