8000 GitHub - g1ibby/dcd: 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
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ dcd Public

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

License

Notifications You must be signed in to change notification settings

g1ibby/dcd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

79 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⚑ DCD - Deploy Docker Apps in Seconds, Not Hours

Crates.io Downloads Stars License: MIT CI

The simplest way to deploy Docker Compose applications to any server

Stop wrestling with complex CI/CD. Start shipping faster.

🎯 Quick Start β€’ πŸ”₯ Features β€’ πŸ“– Examples β€’ πŸ› οΈ Install


DCD in action - deploy in seconds

Deploy your Docker app to production in one command ⚑

πŸ’‘ The Problem Every Developer Knows

You've built something amazing locally. docker-compose up works perfectly. Now you need to deploy it...

Option 1: Managed Platforms

  • πŸ’Έ Expensive as you scale
  • πŸ”’ Vendor lock-in
  • βš™οΈ Limited customization
  • 🚫 Not all apps supported

Option 2: Complex CI/CD

  • πŸ“š Hours learning Kubernetes/Docker Swarm
  • πŸ”§ Complex pipeline setup
  • πŸ› More things to break
  • ⏰ Weeks to get right

What if there was a third way?

✨ Meet DCD - Your Deploy Button for Any Server

DCD gives you the simplicity of Heroku with the power of your own server. Deploy Docker Compose apps to any VPS with a single command.

# That's it. Your app is live. πŸŽ‰
dcd up user@your-server.com

Perfect for:

  • πŸ—οΈ Personal projects that outgrew localhost
  • πŸ’‘ Side hustles that need production deployment
  • πŸš€ Startups wanting infrastructure control
  • πŸ‘¨β€πŸ’» Developers who value simplicity over complexity

πŸ”₯ Why Developers Love DCD

🎯 Zero Configuration Deployment

No YAML hell, no pipeline setup. If it runs with docker-compose, it deploys with DCD.

⚑ Lightning Fast

From code change to live production in under 30 seconds. No build queues, no waiting.

πŸ”’ Your Infrastructure, Your Rules

Deploy to any Linux server you control. Keep your data, control your costs.

πŸ”„ GitHub Actions Ready

Drop-in action for automatic deployments. Perfect CI/CD in 5 lines of YAML.

πŸ’° Save Money

$5/month VPS vs $20+/month managed platform. DCD pays for itself immediately.

πŸš€ Quick Start

Install DCD

# macOS
brew install g1ibby/dcd/dcd

# Other platforms
cargo install dcd

Or download from releases

Deploy Your First App

# 1. Have a docker-compose.yml? βœ…
# 2. Have SSH access to a server? βœ…  
# 3. Deploy!
dcd up user@your-server.com

# That's literally it. Your app is live! 

Setup Automatic Deployments

Add this to .github/workflows/deploy.yml:

- name: Deploy to production  
  uses: g1ibby/dcd/dcd-deploy@v1
  with:
    target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}
    ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}

Push to main = instant deployment ⚑

🌟 Real-World Success Story

Why I Built DCD - My HomeLLM Deployment Story

I created DCD to solve my own deployment frustrations while building HomeLLM - a self-hosted AI platform with Open WebUI, LiteLLM proxy, PostgreSQL, and Traefik.

The Pain Before DCD: Every deployment was a manual nightmare:

ssh user@my-server.com
cd /opt/homellm
git pull origin main
docker-compose down
docker-compose pull
docker-compose up -d

This process took 5-10 minutes and often failed. I avoided deploying updates, which meant bugs stayed unfixed and features took weeks to reach production.

After Building DCD:

dcd up user@my-server.com

The transformation:

  • ⚑ 10x faster
  • πŸ”„ 100% reliable
  • πŸš€ Deploy confidence
  • 🎯 Focus on features

See the live deployment workflow β†’

Now 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.

Real-World Examples

The Side Project That Became Profitable

Before DCD:

# Every deployment was a nightmare
ssh user@server
git pull
docker-compose down
docker-compose pull  
docker-compose up -d

With DCD:

dcd up user@server

Result: Went from deploying once a week (too scary) to deploying multiple times per day. Shipped features faster, caught bugs earlier, grew revenue 3x.

🎯 Perfect For Your Stack

What Works Great

  • 🐳 Any Docker Compose app
  • 🌐 Web apps (React, Vue, Next.js...)
  • πŸ—„οΈ Full-stack apps with databases
  • πŸ€– AI/ML applications
  • πŸ“Š Data analytics platforms
  • πŸ”— API services and microservices

Supported Platforms

  • 🐧 Ubuntu/Debian servers
  • ☁️ Any VPS (DigitalOcean, Linode, AWS EC2...)
  • 🏠 Self-hosted servers
  • πŸ”’ Private infrastructure

πŸ› οΈ Advanced Features

πŸ“‹ Full Command Reference

Commands

  • dcd analyze - Preview what will be deployed
  • dcd up <target> - Deploy or update your app
  • dcd status <target> - Check deployment status
  • dcd destroy <target> - Clean removal

Global Options

-f, --file <FILES>...       Docker Compose files
-e, --env-file <FILES>...   Environment files  
-i, --identity <KEY>        SSH private key (Auto-detects ~/.ssh/id_rsa or ~/.ssh/id_ed25519 if not specified)
-w, --workdir <DIR>         Remote working directory
-v, --verbose               Debug output

Examples

# Multiple compose files
dcd -f docker-compose.yml -f docker-compose.prod.yml up user@server

# Custom SSH key and port
dcd -i ~/.ssh/deploy_key up user@server.com:2222

# Different environment
dcd -e .env.production up user@prod-server.com
πŸ”„ GitHub Actions Integration

Basic Setup

name: Deploy
on:
  push:
    branches: [main]
    
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: g1ibby/dcd/dcd-deploy@v1
        with:
          target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}

Advanced Configuration

- uses: g1ibby/dcd/dcd-deploy@v1
  with:
    command: up
    target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}
    compose_files: "docker-compose.yml docker-compose.prod.yml"
    env_files: ".env.prod"
    ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
    remote_dir: "/opt/myapp"
    no_health_check: false

Environment Management

jobs:
  deploy:
    environment: production  # GitHub environment with secrets
    env:
      DATABASE_URL: ${{ secrets.DATABASE_URL }}
      API_KEY: ${{ secrets.API_KEY }}
βš™οΈ Technical Details

How DCD Works

  1. Analyzes your Docker Compose configuration locally
  2. Syncs necessary files to your server via SSH/SFTP
  3. Installs Docker if needed (optional)
  4. Deploys using docker compose up
  5. Verifies health checks pass
  6. Reports success or failure

File Synchronization

  • Automatically detects referenced files in volumes
  • Syncs only what's needed
  • Preserves file permissions
  • Creates backups before updates

Environment Variables

  • Scans compose files for variable usage
  • Sources from local environment
  • Generates .env.dcd file for remote deployment
  • Secure handling of secrets

Security

  • Uses SSH key authentication
  • Files transferred over encrypted SFTP
  • No credentials stored on remote server
  • Configurable working directories

🀝 Join the Community

🌟 Show Your Support

Star this repo if DCD helps your deployments! ⭐

πŸ› Found a Bug?

Open an issue - we respond fast!

πŸ’‘ Have Ideas?

Join discussions and help shape DCD's future.

πŸ”— Spread the Word

πŸ“¦ Installation

macOS (Homebrew)

brew install g1ibby/dcd/dcd

Using Cargo

cargo install dcd

Download Binary

Get the latest release for your platform:

Verify Installation

dcd --version

πŸš€ Ready to Deploy Faster?

Stop spending hours on deployment setup. Start shipping features.

# Install DCD
brew install g1ibby/dcd/dcd  # macOS
# cargo install dcd         # Other platforms

# Deploy your app
dcd up user@your-server.com

Made with ❀️ for developers who want to ship, not configure

πŸ› Report Bug β€’ πŸ’‘ Request Feature β€’ πŸ“– Documentation

πŸ“ Current Limitations

While DCD handles most Docker Compose deployments perfectly, there are a few current limitations:

  • Build Context: Services using build: directive aren't supported yet. Use pre-built images from registries instead.
  • Platform Support: Currently optimized for Debian/Ubuntu systems. Other Linux distributions may need adjustments.

Built with πŸ¦€ Rust for maximum performance and reliability

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •  
0