A pull-based Continuous Deployment tool for Docker Compose applications in private networks.
Doctor CD is a GitOps-based deployment tool that monitors your GitHub repositories for changes in docker-compose files and automatically deploys updates to your private network infrastructure. It eliminates the need for complex webhook configurations or direct network access to your deployment environment.
- 🔄 Pull-based GitOps: Monitors GitHub repositories for changes
- 🐳 Docker Compose Support: Deploys and manages Docker Compose applications
- 🔍 Image Monitoring: Checks for new image releases in Docker registries
- ⏰ Configurable Polling: Set custom intervals for repository and registry checks
- 🔐 Private Network Friendly: Works behind firewalls without inbound connections
- 🏗️ Containerized: Runs as a Docker container for easy deployment
- Clone this repository:
git clone https://github.com/yourusername/doctor-cd.git
cd doctor-cd- Copy the example configuration:
cp configs/config.yaml.example configs/config.yaml- Edit the configuration file with your repository details:
nano configs/config.yaml- Start Doctor CD:
make docker-compose-updocker run -d \
--name doctor-cd \
-v $(pwd)/configs:/app/configs \
-v /var/run/docker.sock:/var/run/docker.sock \
doctor-cd:latest# Install dependencies
make deps
# Build the application
make build
# Run
make runDoctor CD uses a YAML configuration file to specify repositories, polling intervals, and deployment settings. See configs/config.yaml.example for a complete example.
repository:
url: "https://github.com/user/repo.git"
branch: "main"
compose_file: "docker-compose.yaml"
poll_interval: "5m"
registry:
check_interval: "10m"
username: "your-registry-username"
password: "your-registry-password"
logging:
level: "info"- Go 1.21+
- Docker
- Docker Compose
- Make
# Setup development environment
make setup
# Run in development mode
make dev
# Run tests
make test
# Run linter
make lintmake help # Show all available commandsDoctor CD follows a modular architecture:
- Git Module: Handles repository cloning and change detection
- Docker Module: Manages Docker Compose operations and registry interactions
- Scheduler: Manages polling intervals and job execution
- Deployment: Orchestrates the deployment process
- API: Provides status and health endpoints
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, issues, or contributions, please open an issue on GitHub.
Doctor CD - Making Docker Compose deployments in private networks simple and reliable.