# Developing ASPECT within a container
The workflow described previously does not include advice on how to modify
ASPECT inside the container. We recommend a slightly
different workflow for advanced users that want to modify parts of
ASPECT. The ASPECT
docker container itself is built on top of a deal.II container that contains all dependencies for
compiling ASPECT. Therefore it is possible to
run the deal.II container, mount an ASPECT
source directory from your host system and compile it inside of the container.
An example workflow could look as follows (assuming you navigated in a
terminal into the modified ASPECT source
folder):
``` ksh
docker pull geodynamics/aspect:latest
docker run -it -v "$(pwd):/home/dealii/aspect:ro" geodynamics/aspect:latest
```
Inside of the container you now find a read-only
ASPECT directory that contains your modified source
code. You can compile and run a model inside the container, e.g. in the
following way:
``` ksh
mkdir aspect-build
cd aspect-build
cmake -DCMAKE_BUILD_TYPE=Debug $HOME/aspect
make -j4
./aspect $HOME/aspect/cookbooks/shell_simple_2d/shell_simple_2d.prm
```
To avoid repeated recompilations of the ASPECT
source folder we recommend to reuse the so prepared container instead of
starting new containers based on the deal.II
image. This can be achieved by the following commands outside of the
container:
``` ksh
docker ps -a # Find the name of the running / recently closed container in the output
docker restart CONTAINER_NAME
docker attach CONTAINER_NAME
```
For more information on the differences between using images and containers,
and how to attach additional terminals to a running container, we refer to the
docker documentation (e.g.
).