diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..b6c1da7
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,26 @@
+# Ignore the following files and directories when building the Docker image
+*.pyc
+__pycache__/
+*.ipynb_checkpoints
+*.log
+*.csv
+*.tsv
+*.h5
+*.pth
+*.pt
+*.zip
+*.tar.gz
+*.egg-info/
+dist/
+build/
+.env
+venv/
+.env.local
+*.DS_Store
+*.egg
+*.whl
+*.pkl
+*.json
+*.yaml
+*.yml
+submodules/
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..9719c23
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,52 @@
+FROM nvidia/cuda:12.1.1-devel-ubuntu22.04
+
+# Set the working directory
+WORKDIR /EDGS
+
+# Install system dependencies first, including git, build-essential, and cmake
+RUN apt-get update && apt-get install -y \
+ git \
+ wget \
+ build-essential \
+ cmake \
+ ninja-build \
+ libgl1-mesa-glx \
+ libglib2.0-0 \
+ && rm -rf /var/lib/apt/lists/*
+
+# Copy only essential files for cloning submodules first (e.g., .gitmodules)
+# Or, if submodules are public, you might not need to copy anything specific for this step
+# For simplicity, we'll copy everything, but this could be optimized
+COPY . .
+
+# Initialize and update submodules
+RUN git submodule init && git submodule update --recursive
+
+# Install Miniconda
+RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh && \
+ bash /tmp/miniconda.sh -b -p /opt/conda && \
+ rm /tmp/miniconda.sh
+ENV PATH="/opt/conda/bin:${PATH}"
+
+# Create the conda environment and install dependencies
+RUN conda create -y -n edgs python=3.10 pip && \
+ conda clean -afy && \
+ echo "source activate edgs" > ~/.bashrc
+
+# Set CUDA architectures to compile for
+ENV TORCH_CUDA_ARCH_LIST="7.5;8.0;8.6;8.9;9.0+PTX"
+
+# Activate the environment and install Python dependencies
+RUN /bin/bash -c "source activate edgs && \
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 && \
+ pip install -e ./submodules/gaussian-splatting/submodules/diff-gaussian-rasterization && \
+ pip install -e ./submodules/gaussian-splatting/submodules/simple-knn && \
+ pip install pycolmap wandb hydra-core tqdm torchmetrics lpips matplotlib rich plyfile imageio imageio-ffmpeg && \
+ pip install -e ./submodules/RoMa && \
+ pip install gradio plotly scikit-learn moviepy==2.1.1 ffmpeg open3d"
+
+# Expose the port for Gradio
+EXPOSE 7862
+
+# Command to run the Gradio demo
+CMD ["bash", "-c", "source activate edgs && python gradio_demo.py --port 7862"]
\ No newline at end of file
diff --git a/README.md b/README.md
index 8c40427..c6a5307 100644
--- a/README.md
+++ b/README.md
@@ -69,45 +69,14 @@ Alternatively, check our [Colab notebook](https://colab.research.google.com/gith
## 🛠️ Installation
-You can either run `install.sh` or manually install using the following:
+You can install it just:
```bash
-git clone git@github.com:CompVis/EDGS.git --recursive
-cd EDGS
-git submodule update --init --recursive
-
-conda create -y -n edgs python=3.10 pip
-conda activate edgs
-
-# Set up path to your CUDA. In our experience similar versions like 12.2 also work well
-export CUDA_HOME=/usr/local/cuda-12.1
-export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
-export PATH=$CUDA_HOME/bin:$PATH
-
-conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -y
-conda install nvidia/label/cuda-12.1.0::cuda-toolkit -y
-
-pip install -e submodules/gaussian-splatting/submodules/diff-gaussian-rasterization
-pip install -e submodules/gaussian-splatting/submodules/simple-knn
-
-# For COLMAP and pycolmap
-# Optionally install original colmap but probably pycolmap suffices
-# conda install conda-forge/label/colmap_dev::colmap
-pip install pycolmap
-
-
-pip install wandb hydra-core tqdm torchmetrics lpips matplotlib rich plyfile imageio imageio-ffmpeg
-conda install numpy=1.26.4 -y -c conda-forge --override-channels
-
-pip install -e submodules/RoMa
-conda install anaconda::jupyter --yes
-
-# Stuff necessary for gradio and visualizations
-pip install gradio
-pip install plotly scikit-learn moviepy==2.1.1 ffmpeg
-pip install open3d
+docker compose up
```
+or you can install with running `install.sh`.
+
## 📦 Data
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..6801517
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,16 @@
+services:
+ edgs-app:
+ build: . # Instructs Docker Compose to build using the Dockerfile in the current directory
+ image: edgs-app # This is the name of the image you built
+ ports:
+ - "7862:7862" # Map port 7862 on the host to port 7862 in the container
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - driver: nvidia
+ count: all # Use all available GPUs
+ capabilities: [gpu] # Request GPU capabilities
+ volumes:
+ - ./data:/EDGS/data # Example: map a local 'data' folder to '/EDGS/data' in the container
+ - ./output:/EDGS/output # Example: map a local 'output' folder
\ No newline at end of file