🌟 Join our Community on Discord 🌟
Documentation • Tutorial • Contribution Guide • Support
DEM is a command-line tool that provides an easy, reproducible, and scalable way to set up multi-container-based Development Environments (DevEnvs for short) for software development.
DEM is currently in alpha state, so expect major changes in the future!
Contributors and early adopters are welcome!
- Create scalable, reliable, and reproducible containerized Development Environments where each tool is isolated in its own container.
- Install preconfigured Development Environments from catalogs.
- Ensure that everyone on your team works with the same toolset.
Unlike other container-based development environments that pack all tools into a single image requiring users to enter the container via an interactive shell, DEM creates a separate container for each tool. This allows you to work on your host system with your usual setup while the development-specific tools are isolated in containers.
Linux and Windows are supported.
ℹ️ macOS is not yet officially supported. However, if all prerequisites are met, DEM should work on macOS as well.
DEM depends on Python and Docker. Ensure you have the following versions:
- Python 3.10+
- Docker Engine 24.0+
First, install Python and Docker if you haven't already:
Make sure to include pip during Python installation.
Install DEM from the PyPI repository using:
pip install axem-dem
- The package name is 'axem-dem', but the command is
dem
. - Ensure the Docker daemon is running before using DEM.
Enable autocompletion for PowerShell, Bash, and Zsh shells:
dem --install-completion
If the command doesn't work, specify your shell type as an input parameter (powershell, bash, or zsh).
Note for Zsh users:
compinit
must be called from your .zshrc.
We got you covered in all scenarios!
DEM comes with a few templates available from the axem
catalog. List them with:
dem list --cat axem
Clone the selected template:
dem clone DEV_ENV_NAME
Replace DEV_ENV_NAME with the name of the Development Environment you want to clone.
Enter the project's root directory and initialize the DevEnv:
dem init
Import a DevEnv descriptor JSON:
dem import PATH_TO_DEV_ENV
where PATH_TO_DEV_ENV is the path to the JSON file.
Create a new DevEnv:
dem create DEV_ENV_NAME
Customize your DevEnv:
- Add or remove tools.
- Change the tool image for a given tool.
You can edit the DevEnv with:
dem modify DEV_ENV_NAME
Finally, if you are ready to use the Development Environment, install it with:
dem install DEV_ENV_NAME
For more detailed instructions please refer to the Documentation
A Development Environment (DevEnv) is a set of software tools used for a specific development project (e.g., build system, debugger, test framework).
The idea is to pack the tools separately into container images, which are then can be stored in registries.
Each DevEnv has a descriptor, like a blueprint, indicating which tools are required.
Sample descriptors can be stored in the Development Environment Catalogs. You can browse these catalogs and download a copy of the Development Environment descriptor to your local catalog.
A DevEnv can be installed from your local catalog.