An advanced LLM-powered AI agent tool that automates the process of understanding and containerizing GitHub repositories. This tool eliminates the guesswork from running code by automatically analyzing repositories and generating production-ready Docker configurations.
- π€ AI-Powered Analysis: Uses Google's Gemini API to intelligently analyze repository structure and tech stack
- π¦ Automatic Containerization: Generates optimized Dockerfiles with security best practices
- π§ Multi-Language Support: Supports Python, JavaScript/TypeScript, Java, Go, and more
- π― Framework Detection: Recognizes popular frameworks like Django, Flask, Express, Next.js, Spring, etc.
- π Unified Configuration: Creates JSON/YAML config files with ports, environment variables, and commands
- π₯ Health Checks: Automatically configures container health checks
- β Validation: Optional container build validation
- π¨ Beautiful CLI: Rich terminal interface with progress indicators and colored output
- Python 3.9+
- Git
- uv (recommended) or pip
- Docker (optional, for validation)
- Google Gemini API key
# Clone the repository
git clone https://github.com/dheepakshakthi/DevO-Hackfinity.git
cd DevO-Hackfinity
# Install uv if not already installed
# Visit: https://docs.astral.sh/uv/getting-started/installation/
# Install dependencies using uv
uv sync
# Set up API key (choose one method)
# Method 1: Create .env file (recommended)
copy .env.example .env
# Edit .env and add your API key: GEMINI_API_KEY=your_api_key_here
# Method 2: Environment variable (temporary)
set GEMINI_API_KEY=your_api_key_here
# Run the tool
uv run python repo_containerizer.py --help# Clone the repository
git clone https://github.com/dheepakshakthi/DevO-Hackfinity.git
cd DevO-Hackfinity
# Install uv if not already installed
# Visit: https://docs.astral.sh/uv/getting-started/installation/
# Install dependencies using uv
uv sync
# Set up API key (choose one method)
# Method 1: Create .env file (recommended)
cp .env.example .env
# Edit .env and add your API key: GEMINI_API_KEY=your_api_key_here
# Method 2: Environment variable (temporary)
export GEMINI_API_KEY=your_api_key_here
# Run the tool
uv run python repo_containerizer.py --help# Clone the repository
git clone https://github.com/dheepakshakthi/DevO-Hackfinity.git
cd DevO-Hackfinity
# Create virtual environment
python -m venv venv
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Set API key
set GEMINI_API_KEY=your_api_key_here# Clone the repository
git clone https://github.com/dheepakshakthi/DevO-Hackfinity.git
cd DevO-Hackfinity
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Set API key
export GEMINI_API_KEY=your_api_key_here# Containerize a GitHub repository
uv run python repo_containerizer.py containerize https://github.com/owner/repo
# Specify output directory
uv run python repo_containerizer.py containerize https://github.com/owner/repo --output ./my-output
# Generate JSON config instead of YAML
uv run python repo_containerizer.py containerize https://github.com/owner/repo --format json
# Validate container by building it
uv run python repo_containerizer.py containerize https://github.com/owner/repo --validate# Use the convenient batch file
devo.bat containerize https://github.com/owner/repo
# Or use the standalone version
devo-standalone.bat containerize https://github.com/owner/repo# Set API key via command line
uv run python repo_containerizer.py containerize https://github.com/owner/repo --api-key your_api_key
# Combine multiple options
uv run python repo_containerizer.py containerize https://github.com/owner/repo \
--output ./output \
--format yaml \
--validate \
--api-key your_api_key# Show help
uv run python repo_containerizer.py --help
# Containerize a repository
python repo_containerizer.py containerize REPO_URL [OPTIONS]
# Validate a generated Dockerfile
python repo_containerizer.py validate path/to/Dockerfile
# Setup environment and check dependencies
python repo_containerizer.py setupRepoContainerizer generates the following files:
Dockerfile: Production-ready container configurationdocker-compose.yml: Multi-service orchestrationcontainer-config.yml/json: Unified configuration with analysis results.env.example: Environment variable templateCONTAINERIZATION_README.md: Setup and usage instructions
π RepoContainerizer
AI-Powered GitHub Repository Containerization
π Cloning repository: https://github.com/example/flask-app
β
Repository cloned to: /tmp/repo_xyz
π Analyzing repository structure...
π Reading important files...
π€ Analyzing repository with AI...
π Generating containerization files...
β
Containerization Complete!
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Analysis Results β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Primary Language β Python β
β Framework β Flask β
β Package Manager β pip β
β Database β PostgreSQL β
β Port β 5000 β
ββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
Generated Files:
π ./output/Dockerfile
π ./output/docker-compose.yml
π ./output/container-config.yml
π ./output/.env.example
π ./output/CONTAINERIZATION_README.md
Next Steps:
1. Navigate to the output directory: cd ./output
2. Build the container: docker build -t my-app .
3. Run the container: docker run -p 5000:8080 my-app
- Python (Django, Flask, FastAPI, generic)
- JavaScript/TypeScript (Express, Next.js, React, Vue, Angular)
- Java (Spring Boot, generic)
- Go (Gin, generic)
- PHP (Laravel, generic)
- Ruby (Rails, generic)
- PostgreSQL
- MySQL
- SQLite
- MongoDB
- Redis
- Elasticsearch
- npm, yarn, pnpm (JavaScript)
- pip, pipenv, poetry (Python)
- maven, gradle (Java)
- cargo (Rust)
- go mod (Go)
- composer (PHP)
- bundle (Ruby)
GEMINI_API_KEY: Your Google Gemini API key (required)
- Get your Gemini API key from Google AI Studio
- Set the environment variable:
# Linux/Mac export GEMINI_API_KEY=your_api_key_here # Windows set GEMINI_API_KEY=your_api_key_here