|
@@ -0,0 +1,54 @@
|
|
|
|
+# Use the official Ubuntu base image
|
|
|
|
+FROM ubuntu:22.04
|
|
|
|
+
|
|
|
|
+# Set environment variables to non-interactive (this prevents some prompts)
|
|
|
|
+ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
+
|
|
|
|
+# Install necessary dependencies for OpenFHE and JupyterLab
|
|
|
|
+RUN apt-get update && apt-get install -y \
|
|
|
|
+ git \
|
|
|
|
+ cmake \
|
|
|
|
+ build-essential \
|
|
|
|
+ python3 \
|
|
|
|
+ python3-dev \
|
|
|
|
+ python3-pip \
|
|
|
|
+ python3-venv \
|
|
|
|
+ sudo \
|
|
|
|
+ && apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
+
|
|
|
|
+# Install PyBind11
|
|
|
|
+RUN pip3 install "pybind11[global]"
|
|
|
|
+
|
|
|
|
+# Install JupyterLab
|
|
|
|
+RUN python3 -m pip install --no-cache-dir jupyterlab
|
|
|
|
+
|
|
|
|
+# Clone and build OpenFHE-development
|
|
|
|
+RUN git clone https://github.com/openfheorg/openfhe-development.git \
|
|
|
|
+ && cd openfhe-development \
|
|
|
|
+ && mkdir build \
|
|
|
|
+ && cd build \
|
|
|
|
+ && cmake -DBUILD_UNITTESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_BENCHMARKS=OFF .. \
|
|
|
|
+ && make -j$(nproc) \
|
|
|
|
+ && make install
|
|
|
|
+
|
|
|
|
+# Assume that OpenFHE installs libraries into /usr/local/lib
|
|
|
|
+# Update LD_LIBRARY_PATH to include this directory
|
|
|
|
+ENV LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
|
|
|
|
+
|
|
|
|
+# Clone and build OpenFHE-Python
|
|
|
|
+RUN git clone https://github.com/openfheorg/openfhe-python.git \
|
|
|
|
+ && cd openfhe-python \
|
|
|
|
+ && mkdir build \
|
|
|
|
+ && cd build \
|
|
|
|
+ && cmake .. \
|
|
|
|
+ && make -j$(nproc) \
|
|
|
|
+ && make install
|
|
|
|
+
|
|
|
|
+# Expose the port JupyterLab will listen on
|
|
|
|
+EXPOSE 8888
|
|
|
|
+
|
|
|
|
+# Set the working directory
|
|
|
|
+WORKDIR /workspace
|
|
|
|
+
|
|
|
|
+# Start JupyterLab without token authentication
|
|
|
|
+CMD ["jupyter-lab", "--ip=0.0.0.0", "--no-browser", "--allow-root", "--NotebookApp.token=''", "--NotebookApp.allow_origin='*'", "--NotebookApp.password=''", "--NotebookApp.password_required=False"]
|