https://github.com/thenameiswiiwin/docker-dev-env
A collection of ready-to-use Docker development environments for multiple Linux distributions (Ubuntu, Debian, Alpine, Arch, Kali). Includes shared configurations, utility scripts, and comprehensive documentation for reproducible development setups across teams and CI/CD pipelines.
https://github.com/thenameiswiiwin/docker-dev-env
alpine arch-linux ci-cd containers cross-platform-testing debian developer-tools development-environment devops docker docker-compose kali-linux linux reproducible-environments ubuntu
Last synced: 1 day ago
JSON representation
A collection of ready-to-use Docker development environments for multiple Linux distributions (Ubuntu, Debian, Alpine, Arch, Kali). Includes shared configurations, utility scripts, and comprehensive documentation for reproducible development setups across teams and CI/CD pipelines.
- Host: GitHub
- URL: https://github.com/thenameiswiiwin/docker-dev-env
- Owner: thenameiswiiwin
- Created: 2025-03-21T04:28:44.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-03-21T04:29:47.000Z (7 months ago)
- Last Synced: 2025-03-21T05:24:13.485Z (7 months ago)
- Topics: alpine, arch-linux, ci-cd, containers, cross-platform-testing, debian, developer-tools, development-environment, devops, docker, docker-compose, kali-linux, linux, reproducible-environments, ubuntu
- Language: Shell
- Homepage:
- Size: 0 Bytes
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Docker Development Environments
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.
## Overview
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## Quick Start
### Prerequisites
- Docker installed on your system
- Make (optional, for using the Makefile)### Building Images
Build all images:
```bash
make build-all
```Or build a specific image:
```bash
make build DISTRO=ubuntu
```### Running Containers
Start a container for a specific distribution:
```bash
make run DISTRO=ubuntu
```This will start an interactive shell in the container with the current directory mounted at `/workspace`.
## Docker Compose
For more complex setups, you can use the provided docker-compose.yml:
```bash
docker-compose up -d ubuntu
docker-compose exec ubuntu bash
```## Image Details
Each Docker image includes:
- Git for version control
- Ansible for automation
- Build tools appropriate for the distribution
- Sudo for privilege escalation
- UTF-8 locale configuration### Alpine Linux
Lightweight container based on Alpine, ideal for minimal environments and CI/CD pipelines.
```bash
docker build -t dev-alpine ./images/alpine
docker run -it --rm -v $(pwd):/workspace dev-alpine
```### Arch Linux
Rolling release distribution with up-to-date packages.
```bash
docker build -t dev-arch ./images/arch
docker run -it --rm -v $(pwd):/workspace dev-arch
```### Debian
Stable distribution with excellent package availability.
```bash
docker build -t dev-debian ./images/debian
docker run -it --rm -v $(pwd):/workspace dev-debian
```### Kali Linux
Security-focused distribution with penetration testing tools.
```bash
docker build -t dev-kali ./images/kali
docker run -it --rm -v $(pwd):/workspace dev-kali
```### Ubuntu
Popular distribution with extensive community support.
```bash
docker build -t dev-ubuntu ./images/ubuntu
docker run -it --rm -v $(pwd):/workspace dev-ubuntu
```## Customization
### Adding Additional Packages
Each 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:
```dockerfile
RUN apt-get update && \
apt-get install -y \
your-package-1 \
your-package-2 \
# Add more packages here
&& apt-get clean
```### Adding Custom Configuration
Mount custom configuration files into the container or add them to the shared/configs directory.
Example:
```bash
docker run -it --rm \
-v $(pwd):/workspace \
-v ~/.gitconfig:/root/.gitconfig \
dev-ubuntu
```### Creating a Custom User
By default, containers run as root. For a more realistic development environment, you can create a custom user:
```bash
# Using the provided script
docker run -it --rm \
-v $(pwd):/workspace \
dev-ubuntu \
/shared/scripts/setup-user.sh myusername
```## Use Cases
### Local Development
Use these containers to ensure consistent development environments across a team:
```bash
docker run -it --rm \
-v $(pwd):/workspace \
-p 3000:3000 \
dev-ubuntu
```### CI/CD Pipelines
These images can be used in CI/CD pipelines to ensure consistent testing environments:
```yaml
# Example GitLab CI configuration
test:
image: yourrepo/dev-ubuntu:latest
script:
- cd /builds/your-project
- ./run-tests.sh
```### Cross-Platform Testing
Test your applications on different Linux distributions to ensure compatibility:
```bash
# 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.sh
```## Project Structure
```
docker-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
```## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request