A collection of Docker environments for development across multiple Linux distributions. This project provides consistent, reproducible development environments that can be used for testing, development, and CI/CD pipelines.
This repository contains Dockerfiles for various Linux distributions, configured with common development tools and utilities. Each environment is designed to be lightweight yet functional for software development.
Currently supported distributions:
- Ubuntu (latest)
- Debian (latest)
- Arch Linux
- Alpine Linux
- Kali Linux
- Docker installed on your system
- Make (optional, for using the Makefile)
Build all images:
make build-allOr build a specific image:
make build DISTRO=ubuntuStart a container for a specific distribution:
make run DISTRO=ubuntuThis will start an interactive shell in the container with the current directory mounted at /workspace.
For more complex setups, you can use the provided docker-compose.yml:
docker-compose up -d ubuntu
docker-compose exec ubuntu bashEach Docker image includes:
- Git for version control
- Ansible for automation
- Build tools appropriate for the distribution
- Sudo for privilege escalation
- UTF-8 locale configuration
Lightweight container based on Alpine, ideal for minimal environments and CI/CD pipelines.
docker build -t dev-alpine ./images/alpine
docker run -it --rm -v $(pwd):/workspace dev-alpineRolling release distribution with up-to-date packages.
docker build -t dev-arch ./images/arch
docker run -it --rm -v $(pwd):/workspace dev-archStable distribution with excellent package availability.
docker build -t dev-debian ./images/debian
docker run -it --rm -v $(pwd):/workspace dev-debianSecurity-focused distribution with penetration testing tools.
docker build -t dev-kali ./images/kali
docker run -it --rm -v $(pwd):/workspace dev-kaliPopular distribution with extensive community support.
docker build -t dev-ubuntu ./images/ubuntu
docker run -it --rm -v $(pwd):/workspace dev-ubuntuEach Dockerfile can be customized to include additional packages needed for your development workflow. Simply modify the relevant Dockerfile to add more packages during the build process.
Example for Ubuntu:
RUN apt-get update && \
apt-get install -y \
your-package-1 \
your-package-2 \
# Add more packages here
&& apt-get cleanMount custom configuration files into the container or add them to the shared/configs directory.
Example:
docker run -it --rm \
-v $(pwd):/workspace \
-v ~/.gitconfig:/root/.gitconfig \
dev-ubuntuBy default, containers run as root. For a more realistic development environment, you can create a custom user:
# Using the provided script
docker run -it --rm \
-v $(pwd):/workspace \
dev-ubuntu \
/shared/scripts/setup-user.sh myusernameUse these containers to ensure consistent development environments across a team:
docker run -it --rm \
-v $(pwd):/workspace \
-p 3000:3000 \
dev-ubuntuThese images can be used in CI/CD pipelines to ensure consistent testing environments:
# Example GitLab CI configuration
test:
image: yourrepo/dev-ubuntu:latest
script:
- cd /builds/your-project
- ./run-tests.shTest your applications on different Linux distributions to ensure compatibility:
# Test on Ubuntu
docker run -it --rm -v $(pwd):/app dev-ubuntu ./run-tests.sh
# Test on Alpine
docker run -it --rm -v $(pwd):/app dev-alpine ./run-tests.shdocker-dev-env/
├── Makefile
├── README.md
├── docker-compose.yml
├── .dockerignore
├── images/
│ ├── alpine/
│ │ ├── Dockerfile
│ │ └── init.sh
│ ├── arch/
│ │ ├── Dockerfile
│ │ └── init.sh
│ ├── debian/
│ │ ├── Dockerfile
│ │ └── init.sh
│ ├── kali/
│ │ ├── Dockerfile
│ │ └── init.sh
│ └── ubuntu/
│ ├── Dockerfile
│ └── init.sh
├── scripts/
│ ├── build-all.sh
│ └── test-images.sh
└── shared/
├── configs/
│ ├── bashrc
│ ├── gitconfig
│ └── vimrc
└── scripts/
├── install-tools.sh
└── setup-user.sh
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request