codon/scripts/Dockerfile.codon-jupyter

53 lines
2.1 KiB
Docker

FROM exaloop/codon-llvm:15.0.1
ENV pass="codon-jupyter"
# Install dependencies
RUN yum -y install openssl-devel libsodium-devel libuuid-devel
# Build Codon core
RUN git clone -b develop https://github.com/exaloop/codon /github/codon
RUN cmake3 -S /github/codon -B /github/codon/build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/opt/llvm-codon/bin/clang \
-DCMAKE_CXX_COMPILER=/opt/llvm-codon/bin/clang++ \
-DLLVM_DIR=/opt/llvm-codon/lib/cmake/llvm \
-DCMAKE_INSTALL_PREFIX=/opt/codon
RUN cmake3 --build /github/codon/build
RUN cmake3 --install /github/codon/build
# Build Codon Jupyter support
RUN cmake3 -S /github/codon/jupyter -B /github/codon/jupyter/build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/opt/llvm-codon/bin/clang \
-DCMAKE_CXX_COMPILER=/opt/llvm-codon/bin/clang++ \
-DLLVM_DIR=/opt/llvm-codon/lib/cmake/llvm \
-DCODON_PATH=/opt/codon \
-DOPENSSL_ROOT_DIR=$(openssl version -d | cut -d' ' -f2 | tr -d '"') \
-DOPENSSL_CRYPTO_LIBRARY=/usr/lib64/libssl.so \
-DXEUS_USE_DYNAMIC_UUID=ON
RUN cmake3 --build /github/codon/jupyter/build
RUN cmake3 --install /github/codon/jupyter/build
# Build Seq (bioinformatics plugin) for Codon
RUN git clone -b develop https://github.com/exaloop/seq /github/seq
RUN cmake3 -S /github/seq -B /github/seq/build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/opt/llvm-codon/bin/clang \
-DCMAKE_CXX_COMPILER=/opt/llvm-codon/bin/clang++ \
-DLLVM_DIR=/opt/llvm-codon/lib/cmake/llvm \
-DCODON_PATH=/opt/codon
RUN cmake3 --build /github/seq/build
RUN cmake3 --install /github/seq/build
# Set up Codon Jupyter kernel
RUN pip3 install ipywidgets==7.6.5 numpy matplotlib pandas scipy jupyter plotly
RUN mkdir -p /usr/share/jupyter/kernels/codon
RUN echo '{"display_name": "Codon", "argv": [ "/opt/codon/bin/codon", "jupyter", "-plugin", "seq", "{connection_file}" ], "language": "python"}' > /usr/share/jupyter/kernels/codon/kernel.json
# Launch Jupyter
ENV CODON_PYTHON="/usr/lib64/libpython3.so"
CMD jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token=${pass}