90f83b775e1a3d57a81c1329c28222c563796a66
🚀 Deploy to Docker (Swarm or Compose) Action
Robustly deploy your Docker Compose files to Docker Swarm or regular Docker Compose environments via SSH. This action provides detailed debug output, secure SSH handling, validation, and automatic cleanup for a smooth, reliable deployment experience.
✨ Features
- ✅ Supports both Docker Swarm and Docker Compose
- 🔑 Secure SSH key handling
- 🔍 Remote validation of Docker Compose files
- 🧹 Automatic cleanup of temporary files
- 📋 Detailed debug logs for easy troubleshooting
- 📂 Optional copying of Docker build context
- 📄 Optional copying of
.envfiles
📥 Inputs
| Input | Description | Required | Default |
|---|---|---|---|
stack_name |
Docker stack or compose project name | ✅ Yes | - |
ssh_host |
SSH host | ✅ Yes | - |
ssh_user |
SSH username | ✅ Yes | - |
ssh_key |
SSH private key | ✅ Yes | - |
deploy_file |
Path to the processed deployment file | ✅ Yes | - |
deploy_mode |
Deployment mode: swarm or compose |
❌ No | swarm |
remote_temp_dir |
Remote temporary directory for deployment files | ❌ No | /tmp |
copy_build_context |
Whether to copy Docker build context to remote host | ❌ No | false |
build_context_path |
Local path to Docker build context | ❌ No | build-context |
copy_env_file |
Whether to copy .env file to remote host |
❌ No | false |
env_file_path |
Local path to .env file |
❌ No | .env |
🚦 Deployment Modes
This action supports two deployment modes:
-
Docker Swarm (
swarm) 🚢
Deploys usingdocker stack deploy. -
Docker Compose (
compose) 🐳
Deploys usingdocker compose up.
🛠️ Example Usage
Deploying to Docker Swarm 🚢
- name: Deploy to Docker Swarm 🚢
uses: your-org/deploy-to-docker-action@main
with:
stack_name: my-awesome-stack
ssh_host: ${{ vars.SSH_HOST }}
ssh_user: ${{ secrets.SSH_USER }}
ssh_key: ${{ secrets.SSH_KEY }}
deploy_file: docker-compose.processed.yml
deploy_mode: swarm
Deploying with Docker Compose 🐳 (including build context and .env file)
- name: Deploy using Docker Compose 🐳
uses: your-org/deploy-to-docker-action@main
with:
stack_name: my-compose-project
ssh_host: ${{ vars.SSH_HOST }}
ssh_user: ${{ secrets.SSH_USER }}
ssh_key: ${{ secrets.SSH_KEY }}
deploy_file: docker-compose.processed.yml
deploy_mode: compose
copy_build_context: true
build_context_path: ./docker-context
copy_env_file: true
env_file_path: ./production.env
🧑💻 How It Works
This action performs the following steps:
- 🔑 Securely creates a temporary SSH key file for authentication.
- 📁 Creates a secure temporary directory on the remote host.
- 📤 Copies your processed Docker Compose file to the remote host.
- 📂 Optionally copies Docker build context to the remote host.
- 📄 Optionally copies
.envfile to the remote host. - 🔍 Validates the Docker Compose file remotely to ensure correctness.
- 🚢🐳 Deploys your stack/project based on the selected deployment mode.
- 🧹 Cleans up temporary files both locally and remotely.
📖 Debugging & Logs
During deployment, the action provides detailed debug logs at every step, making it easy to troubleshoot any issues:
- ✅ SSH connection details
- ✅ File transfer status
- ✅ Validation results
- ✅ Deployment status
- ✅ Cleanup confirmation
⚠️ Requirements
- SSH access to your Docker host.
- Docker & Docker Compose installed on the remote host.
- Proper permissions to deploy stacks or compose projects remotely.
📜 License
This action is open-source software licensed under the MIT license.
Happy deploying! 🎉
— Grand
Description