From 73648ebe3113b98733c130c254ef28fda07944c0 Mon Sep 17 00:00:00 2001 From: Florez Ospina Juan Felipe Date: Wed, 2 Apr 2025 14:09:44 +0200 Subject: [PATCH] Update Dockerfile and docker-compose.yaml. By default, container can use cifs to map network drives so no need to install, and added bash command to docker compose file to run both jupyterlab and dash board simultanously --- Dockerfile | 96 +++++++++++++++++++++++---------------------- docker-compose.yaml | 8 +++- 2 files changed, 56 insertions(+), 48 deletions(-) diff --git a/Dockerfile b/Dockerfile index 615e4af..1b637a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,46 +1,50 @@ -# Get additional info about the Dockerfile at https://docs.docker.com/reference/dockerfile/ - -FROM continuumio/miniconda3:latest - -# Define the name of the environment -ARG ENV_NAME=apog_penv -ENV ENV_NAME=apog_penv - -# Set the working directory -WORKDIR /acsmdc - -# Use mamba if available for faster installation -RUN conda install -y -n base -c conda-forge mamba && \ - mamba create -y -n $ENV_NAME -c conda-forge -c defaults python=3.11 \ - jupyter numpy h5py pandas matplotlib plotly=5.24 scipy pip && \ - conda clean --all -y && rm -rf /root/.cache/pip - -# Activate the environment and install additional pip packages -RUN conda run -n $ENV_NAME pip install pybis==1.35 igor2 ipykernel sphinx dash dash-bootstrap-components - -# Set the default environment when the container starts -ENV CONDA_DEFAULT_ENV=$ENV_NAME -ENV PATH=/opt/conda/envs/$ENV_NAME/bin:$PATH - -# Create necessary directories for VOLUME -RUN mkdir -p /acsmdc/data /acsmdc/figures /acsmdc/pipelines/params - -# Copy project files, excluding certain directories (handled via .dockerignore) -COPY . /acsmdc - -# Copy and install dependencies from requirements.txt -COPY requirements.txt /acsmdc/requirements.txt -RUN conda run -n $ENV_NAME pip install -r /acsmdc/requirements.txt - -# Define volumes for excluded directories -VOLUME ["/acsmdc/data", "/acsmdc/figures", "/acsmdc/pipelines/params"] - -# Add JupyterLab -RUN pip install --no-cache-dir jupyterlab -#RUN pip install pipx -#RUN pipx install renku -# Add any other packages needed for JupyterLab -#RUN pip install --no-cache-dir matplotlib scikit-learn - -# If you want to set JupyterLab as the default command -CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token='my-token'"] +# Get additional info about the Dockerfile at https://docs.docker.com/reference/dockerfile/ + +FROM continuumio/miniconda3:latest + +# Define the name of the environment +ARG ENV_NAME=apog_penv +ENV ENV_NAME=apog_penv + +# Set the working directory +WORKDIR /acsmdc + +#RUN apt-get update && apt-get install -y cifs-utils + +# Use mamba if available for faster installation +RUN conda install -y -n base -c conda-forge mamba && \ + mamba create -y -n $ENV_NAME -c conda-forge -c defaults python=3.11 \ + jupyter numpy h5py pandas matplotlib plotly=5.24 scipy pip && \ + conda clean --all -y && rm -rf /root/.cache/pip + +# Activate the environment and install additional pip packages +RUN conda run -n $ENV_NAME pip install pybis==1.35 igor2 ipykernel sphinx dash dash-bootstrap-components + +# Set the default environment when the container starts +ENV CONDA_DEFAULT_ENV=$ENV_NAME +ENV PATH=/opt/conda/envs/$ENV_NAME/bin:$PATH + +# Create necessary directories for VOLUME +RUN mkdir -p /acsmdc/data /acsmdc/figures /acsmdc/pipelines/params +#RUN mkdir -p /mnt/lac_ord + +# Copy project files, excluding certain directories (handled via .dockerignore) +COPY . /acsmdc + +# Copy and install dependencies from requirements.txt +COPY requirements.txt /acsmdc/requirements.txt +RUN conda run -n $ENV_NAME pip install -r /acsmdc/requirements.txt + +# Define volumes for excluded directories +VOLUME ["/acsmdc/data", "/acsmdc/figures", "/acsmdc/pipelines/params"] + +# Add JupyterLab +RUN pip install --no-cache-dir jupyterlab +#RUN pip install pipx +#RUN pipx install renku +# Add any other packages needed for JupyterLab +#RUN pip install --no-cache-dir matplotlib scikit-learn + +# If you want to set JupyterLab as the default command +#CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token='my-token'"] +CMD ["/bin/bash"] \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 834edf7..d6e2beb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,5 @@ services: - data_processor: + datachain_processor: image: datachain_processor container_name: datachain_processor restart: unless-stopped @@ -13,7 +13,11 @@ services: - ./figures:/acsmdc/figures - ./pipelines/params:/acsmdc/pipelines/params - lac_ord:/mnt/network/lac_ord:rw - command: ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token='my-token'"] + command: > + bash -c " + jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token='my-token' & + python /acsmdc/app/data_flagging_app.py + " volumes: lac_ord: