# Docker Deployment Manager Automated Docker deployment system for containerizing and deploying projects from Windows to Linux. ## Overview **Phase 1 (Current):** CLI tool to generate Dockerfiles, docker-compose, and deployment scripts. **Phase 2 (Planned):** Electron desktop app for central management and visibility across all projects. ## Quick Start ```powershell # 1. Install dependencies npm install # 2. Detect a project type npm run docker-deploy -- detect "C:\.bucket\Repos.Git\game.justone" # 3. Initialize Docker config for a project npm run docker-deploy -- init "C:\.bucket\Repos.Git\game.justone" # 4. Build and deploy (from the target project directory) cd C:\.bucket\Repos.Git\game.justone .\build-image-tar.ps1 # Manual: creates tar, shows instructions .\deploy-docker-auto.ps1 # Automated: builds, transfers, starts on server ``` ## Commands ### detect Identify project type without generating files. ```powershell npm run docker-deploy -- detect [path] npm run docker-deploy -- detect "C:\.bucket\Repos.Git\dotrepo.timer" ``` ### init Generate Docker configuration for a project. ```powershell npm run docker-deploy -- init [path] npm run docker-deploy -- init "C:\.bucket\Repos.Git\game.justone" # Options: # --no-interactive Skip prompts, use defaults # --type Force specific project type # --port Override default port # --dry-run Show what would be generated # --overwrite Replace existing files ``` ### batch Operations across multiple projects. ```powershell # Scan all projects and show report npm run docker-deploy -- batch detect --root "C:\.bucket\Repos.Git" --report # Initialize all projects npm run docker-deploy -- batch init --root "C:\.bucket\Repos.Git" ``` ## Supported Project Types | Type | Detection | Template | |------|-----------|----------| | Node.js Express | `package.json` with express | Multi-stage build | | Node.js Vite+React | `package.json` with vite + react | Nginx static | | Node.js Vite+React SSR | `package.json` with vite + react + express | Node runtime | | Python Standard | `requirements.txt` | Python slim | | Python ML/PyTorch | `requirements.txt` with torch | Python + system deps | | .NET Blazor | `.csproj` with Blazor | SDK + ASP.NET runtime | | Static Site | `index.html` | Nginx | ## Generated Files When you run `init`, these files are created in the target project: - `Dockerfile` - Container build instructions - `docker-compose.yml` - Runtime configuration - `.dockerignore` - Files excluded from image - `docker-deployment.json` - Project configuration - `.env.example` - Environment variables template - `deploy-docker-auto.ps1` - Automated SSH deployment script - `build-image-tar.ps1` - Manual build script - `README.DOCKER.md` - Deployment documentation ## Deployment Workflow ### Option 1: Automated (SSH) ```powershell .\deploy-docker-auto.ps1 # Builds image → creates tar → SCPs to server → loads → starts ``` ### Option 2: Manual ```powershell .\build-image-tar.ps1 # Then follow the printed instructions to SCP and deploy ``` ### On the Linux Server ```bash cd ~/containers/project-name/files docker load -i project-name.tar docker compose up -d docker compose logs -f ``` ## Configuration ### Per-Project: docker-deployment.json ```json { "project": { "name": "game-justone", "type": "nodejs-express" }, "runtime": { "port": 3000 }, "deployment": { "sshHost": "192.168.8.178", "sshUser": "deployer", "targetPath": "~/containers/game-justone/files" } } ``` ### Global: global-deployment-config.json Default SSH settings used when initializing new projects. ## Phase 2 Roadmap Electron desktop app with: - Central view of all 35+ projects - Docker status: configured / deployed / running - One-click init, build, deploy - Real-time logs and status updates --- Built for managing Docker deployments across the Gitea repository collection.