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