{"id":28264025,"url":"https://github.com/g1ibby/dcd","last_synced_at":"2026-03-08T00:32:56.492Z","repository":{"id":293767852,"uuid":"973523369","full_name":"g1ibby/dcd","owner":"g1ibby","description":"Deploy Docker Compose apps to remote servers with just one command. Analyzes configs, syncs files, and manages services over SSH so you don't have to","archived":false,"fork":false,"pushed_at":"2025-09-22T18:03:34.000Z","size":3799,"stargazers_count":19,"open_issues_count":7,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-27T16:33:16.669Z","etag":null,"topics":["automation","ci","deploy","devops","docker","docker-compose","github-actions","rust","ssh"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/g1ibby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-27T07:04:47.000Z","updated_at":"2025-08-08T20:01:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"4fc99753-e24a-4c9a-9658-c00028ea9e71","html_url":"https://github.com/g1ibby/dcd","commit_stats":null,"previous_names":["g1ibby/dcd"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/g1ibby/dcd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1ibby%2Fdcd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1ibby%2Fdcd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1ibby%2Fdcd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1ibby%2Fdcd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/g1ibby","download_url":"https://codeload.github.com/g1ibby/dcd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1ibby%2Fdcd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30238896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T00:30:53.000Z","status":"ssl_error","status_checked_at":"2026-03-08T00:30:44.061Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","ci","deploy","devops","docker","docker-compose","github-actions","rust","ssh"],"created_at":"2025-05-20T08:12:33.847Z","updated_at":"2026-03-08T00:32:56.470Z","avatar_url":"https://github.com/g1ibby.png","language":"Rust","readme":"# ⚡ DCD - Deploy Docker Apps in Seconds, Not Hours\n\n\u003cdiv align=\"center\"\u003e\n\n[![Crates.io](https://img.shields.io/crates/v/dcd.svg)](https://crates.io/crates/dcd)\n[![Downloads](https://img.shields.io/crates/d/dcd.svg)](https://crates.io/crates/dcd)\n[![Stars](https://img.shields.io/github/stars/g1ibby/dcd.svg)](https://github.com/g1ibby/dcd/stargazers)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![CI](https://img.shields.io/github/actions/workflow/status/g1ibby/dcd/ci.yml?branch=main)](https://github.com/g1ibby/dcd/actions)\n\n**The simplest way to deploy Docker Compose applications to any server**\n\n*Stop wrestling with complex CI/CD. Start shipping faster.*\n\n[🎯 Quick Start](#-quick-start) • [🔥 Features](#-why-developers-love-dcd) • [📖 Examples](#-real-world-examples) • [🛠️ Install](#-installation)\n\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"demo/demo.gif\" alt=\"DCD in action - deploy in seconds\" width=\"800\"\u003e\n  \u003cp\u003e\u003cem\u003eDeploy your Docker app to production in one command ⚡\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## 💡 The Problem Every Developer Knows\n\nYou've built something amazing locally. `docker-compose up` works perfectly. Now you need to deploy it...\n\n**Option 1: Managed Platforms** \n- 💸 Expensive as you scale  \n- 🔒 Vendor lock-in\n- ⚙️ Limited customization\n- 🚫 Not all apps supported\n\n**Option 2: Complex CI/CD** \n- 📚 Hours learning Kubernetes/Docker Swarm\n- 🔧 Complex pipeline setup\n- 🐛 More things to break\n- ⏰ Weeks to get right\n\n**What if there was a third way?** \n\n## ✨ Meet DCD - Your Deploy Button for Any Server\n\nDCD gives you the **simplicity of Heroku** with the **power of your own server**. Deploy Docker Compose apps to any VPS with a single command.\n\n```bash\n# That's it. Your app is live. 🎉\ndcd up user@your-server.com\n```\n\n**Perfect for:**\n- 🏗️ Personal projects that outgrew localhost\n- 💡 Side hustles that need production deployment  \n- 🚀 Startups wanting infrastructure control\n- 👨‍💻 Developers who value simplicity over complexity\n\n## 🔥 Why Developers Love DCD\n\n### 🎯 **Zero Configuration Deployment**\nNo YAML hell, no pipeline setup. If it runs with `docker-compose`, it deploys with DCD.\n\n### ⚡ **Lightning Fast**\nFrom code change to live production in under 30 seconds. No build queues, no waiting.\n\n### 🔒 **Your Infrastructure, Your Rules**\nDeploy to any Linux server you control. Keep your data, control your costs.\n\n### 🔄 **GitHub Actions Ready**\nDrop-in action for automatic deployments. Perfect CI/CD in 5 lines of YAML.\n\n### 💰 **Save Money**\n$5/month VPS vs $20+/month managed platform. DCD pays for itself immediately.\n\n## 🚀 Quick Start\n\n### Install DCD\n```bash\n# macOS\nbrew install g1ibby/dcd/dcd\n\n# Other platforms\ncargo install dcd\n```\n\n*Or download from [releases](https://github.com/g1ibby/dcd/releases)*\n\n### Deploy Your First App\n```bash\n# 1. Have a docker-compose.yml? ✅\n# 2. Have SSH access to a server? ✅  \n# 3. Deploy!\ndcd up user@your-server.com\n\n# That's literally it. Your app is live! \n```\n\n### Setup Automatic Deployments\nAdd this to `.github/workflows/deploy.yml`:\n\n```yaml\n- name: Deploy to production  \n  uses: g1ibby/dcd/dcd-deploy@v1\n  with:\n    target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}\n    ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}\n```\n\n**Push to main = instant deployment** ⚡\n\n## 🌟 Real-World Success Story\n\n### Why I Built DCD - My HomeLLM Deployment Story\n\nI created DCD to solve my own deployment frustrations while building [HomeLLM](https://github.com/g1ibby/homellm) - a self-hosted AI platform with Open WebUI, LiteLLM proxy, PostgreSQL, and Traefik.\n\n**The Pain Before DCD:**\nEvery deployment was a manual nightmare:\n```bash\nssh user@my-server.com\ncd /opt/homellm\ngit pull origin main\ndocker-compose down\ndocker-compose pull\ndocker-compose up -d\n```\n\nThis process took 5-10 minutes and often failed. I avoided deploying updates, which meant bugs stayed unfixed and features took weeks to reach production.\n\n**After Building DCD:**\n```bash\ndcd up user@my-server.com\n```\n\n**The transformation:**\n- ⚡ **10x faster**\n- 🔄 **100% reliable**  \n- 🚀 **Deploy confidence**\n- 🎯 **Focus on features**\n\n[**See the live deployment workflow →**](https://github.com/g1ibby/homellm/blob/main/.github/workflows/deploy.yml)\n\nNow HomeLLM automatically deploys every time I push to main. What used to be a stressful weekend task is now a seamless part of my development flow.\n\n\n## Real-World Examples\n\n### The Side Project That Became Profitable\n\n**Before DCD:**\n```bash\n# Every deployment was a nightmare\nssh user@server\ngit pull\ndocker-compose down\ndocker-compose pull  \ndocker-compose up -d\n```\n\n**With DCD:**\n```bash\ndcd up user@server\n```\n\n**Result:** Went from deploying once a week (too scary) to deploying multiple times per day. Shipped features faster, caught bugs earlier, grew revenue 3x.\n\n## 🎯 Perfect For Your Stack\n\n### **What Works Great**\n- 🐳 Any Docker Compose app\n- 🌐 Web apps (React, Vue, Next.js...)  \n- 🗄️ Full-stack apps with databases\n- 🤖 AI/ML applications\n- 📊 Data analytics platforms\n- 🔗 API services and microservices\n\n### **Supported Platforms**\n- 🐧 Ubuntu/Debian servers\n- ☁️ Any VPS (DigitalOcean, Linode, AWS EC2...)\n- 🏠 Self-hosted servers\n- 🔒 Private infrastructure\n\n## 🛠️ Advanced Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📋 Full Command Reference\u003c/strong\u003e\u003c/summary\u003e\n\n### Commands\n- `dcd analyze` - Preview what will be deployed\n- `dcd up \u003ctarget\u003e` - Deploy or update your app\n- `dcd status \u003ctarget\u003e` - Check deployment status  \n- `dcd destroy \u003ctarget\u003e` - Clean removal\n\n### Global Options\n```bash\n-f, --file \u003cFILES\u003e...       Docker Compose files\n-e, --env-file \u003cFILES\u003e...   Environment files  \n-i, --identity \u003cKEY\u003e        SSH private key (Auto-detects ~/.ssh/id_rsa or ~/.ssh/id_ed25519 if not specified)\n-w, --workdir \u003cDIR\u003e         Remote working directory\n-v, --verbose               Debug output\n```\n\n### Examples\n```bash\n# Multiple compose files\ndcd -f docker-compose.yml -f docker-compose.prod.yml up user@server\n\n# Custom SSH key and port\ndcd -i ~/.ssh/deploy_key up user@server.com:2222\n\n# Different environment\ndcd -e .env.production up user@prod-server.com\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🔄 GitHub Actions Integration\u003c/strong\u003e\u003c/summary\u003e\n\n### Basic Setup\n```yaml\nname: Deploy\non:\n  push:\n    branches: [main]\n    \njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: g1ibby/dcd/dcd-deploy@v1\n        with:\n          target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}\n          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}\n```\n\n### Advanced Configuration\n```yaml\n- uses: g1ibby/dcd/dcd-deploy@v1\n  with:\n    command: up\n    target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}\n    compose_files: \"docker-compose.yml docker-compose.prod.yml\"\n    env_files: \".env.prod\"\n    ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}\n    remote_dir: \"/opt/myapp\"\n    no_health_check: false\n```\n\n### Environment Management\n```yaml\njobs:\n  deploy:\n    environment: production  # GitHub environment with secrets\n    env:\n      DATABASE_URL: ${{ secrets.DATABASE_URL }}\n      API_KEY: ${{ secrets.API_KEY }}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e⚙️ Technical Details\u003c/strong\u003e\u003c/summary\u003e\n\n### How DCD Works\n1. **Analyzes** your Docker Compose configuration locally\n2. **Syncs** necessary files to your server via SSH/SFTP\n3. **Installs** Docker if needed (optional)\n4. **Deploys** using `docker compose up`\n5. **Verifies** health checks pass\n6. **Reports** success or failure\n\n### File Synchronization\n- Automatically detects referenced files in volumes\n- Syncs only what's needed\n- Preserves file permissions\n- Creates backups before updates\n\n### Environment Variables\n- Scans compose files for variable usage\n- Sources from local environment\n- Generates `.env.dcd` file for remote deployment\n- Secure handling of secrets\n\n### Security\n- Uses SSH key authentication\n- Files transferred over encrypted SFTP\n- No credentials stored on remote server\n- Configurable working directories\n\n\u003c/details\u003e\n\n## 🤝 Join the Community\n\n### 🌟 **Show Your Support**\nStar this repo if DCD helps your deployments! ⭐\n\n### 🐛 **Found a Bug?**\n[Open an issue](https://github.com/g1ibby/dcd/issues) - we respond fast!\n\n### 💡 **Have Ideas?**\n[Join discussions](https://github.com/g1ibby/dcd/discussions) and help shape DCD's future.\n\n### 🔗 **Spread the Word**\n- [Twitter](https://twitter.com/intent/tweet?text=Just%20discovered%20DCD%20-%20deploy%20Docker%20apps%20in%20seconds!%20https://github.com/g1ibby/dcd)\n- [Reddit](https://www.reddit.com/submit?url=https://github.com/g1ibby/dcd\u0026title=DCD%20-%20Deploy%20Docker%20Compose%20apps%20to%20any%20server%20in%20seconds)\n- [Hacker News](https://news.ycombinator.com/submitlink?u=https://github.com/g1ibby/dcd\u0026t=DCD%20-%20Deploy%20Docker%20Compose%20apps%20to%20any%20server%20in%20seconds)\n\n## 📦 Installation\n\n### macOS (Homebrew)\n```bash\nbrew install g1ibby/dcd/dcd\n```\n\n### Using Cargo\n```bash\ncargo install dcd\n```\n\n### Download Binary\nGet the latest release for your platform:\n- [Linux (x86_64)](https://github.com/g1ibby/dcd/releases)\n- [macOS (Intel)](https://github.com/g1ibby/dcd/releases)  \n- [macOS (Apple Silicon)](https://github.com/g1ibby/dcd/releases)\n\n### Verify Installation\n```bash\ndcd --version\n```\n\n## 🚀 Ready to Deploy Faster?\n\nStop spending hours on deployment setup. Start shipping features.\n\n```bash\n# Install DCD\nbrew install g1ibby/dcd/dcd  # macOS\n# cargo install dcd         # Other platforms\n\n# Deploy your app\ndcd up user@your-server.com\n\n```\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ for developers who want to ship, not configure**\n\n[🐛 Report Bug](https://github.com/g1ibby/dcd/issues) • [💡 Request Feature](https://github.com/g1ibby/dcd/discussions) • [📖 Documentation](CONTRIBUTING.md)\n\n\u003c/div\u003e\n\n## 📝 Current Limitations\n\nWhile DCD handles most Docker Compose deployments perfectly, there are a few current limitations:\n\n- **Build Context**: Services using `build:` directive aren't supported yet. Use pre-built images from registries instead.\n- **Platform Support**: Currently optimized for Debian/Ubuntu systems. Other Linux distributions may need adjustments.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003csub\u003eBuilt with 🦀 Rust for maximum performance and reliability\u003c/sub\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg1ibby%2Fdcd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fg1ibby%2Fdcd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg1ibby%2Fdcd/lists"}