wheels deploy push
Deploy your Wheels application to configured servers.
Synopsis
Description
The wheels deploy:push
command builds and deploys your Wheels application to configured servers using Docker. It handles Docker image building, pushing to registry, and deploying to target servers with optional rolling deployments for zero-downtime updates.
Options
tag=<string>
- Docker image tag (defaults to timestamp format: yyyymmddHHmmss)--build
- Build Docker image locally (default: true, use --no-build to skip)--push
- Push image to registry (default: true, use --no-push to skip)--rolling
- Use rolling deployment for zero-downtime updates (default: true, use --no-rolling to disable)servers=<string>
- Deploy to specific servers (comma-separated list)destination=<string>
- Deployment destination/environmenttimeout=<number>
- Deployment timeout in seconds (default: 600)health-timeout=<number>
- Health check timeout in seconds (default: 300)
Examples
Basic deployment
Deploy with specific tag
Skip building and just deploy existing image
Deploy to specific servers
Deploy without rolling updates (with downtime)
Deploy with custom timeouts
Deployment Process
The deployment follows these steps:
Lock Acquisition: Acquire deployment lock to prevent concurrent deployments
Pre-connect Hook: Execute pre-connect lifecycle hook
Tag Generation: Generate timestamp-based tag if not provided
Pre-build Hook: Execute pre-build lifecycle hook
Docker Build: Build Docker image (if --build is enabled)
Registry Push: Push image to configured registry (if --push is enabled)
Pre-deploy Hook: Execute pre-deploy lifecycle hook
Server Deployment: Deploy to each target server
Copy environment configuration
Generate docker-compose.yml
Pull new image
Perform rolling deployment or restart
Clean up old images
Post-deploy Hook: Execute post-deploy lifecycle hook
Lock Release: Release deployment lock
Rolling Deployment
When --rolling
is enabled (default), the deployment:
Scales up the service to run old and new containers simultaneously
Waits for health checks to pass on new containers
Removes old containers only after successful health checks
Rolls back automatically if health checks fail
Health Checks
The deployment uses health checks defined in your deploy.yml configuration:
Deployment Hooks
Lifecycle hooks are executed at various stages:
pre-connect
: Before connecting to serverspre-build
: Before building Docker imagepre-deploy
: Before deploying to serverspost-deploy
: After successful deployment
Configuration
The deployment uses configuration from config/deploy.yml
:
Environment Variables
Environment variables are loaded from .env.deploy
file and copied to target servers.
Docker Compose Generation
The command generates a docker-compose.yml file on target servers with:
Service configuration
Environment variables
Port mappings
Volume mounts
Health checks
Traefik labels (if enabled)
Database services (if configured)
Use Cases
Production deployment with specific version
Deploy pre-built image from CI/CD
Deploy to staging servers only
Emergency deployment without health checks
Best Practices
Use semantic versioning: Tag releases with version numbers
Test in staging first: Deploy to staging before production
Monitor deployments: Check logs and health status
Use rolling deployments: Minimize downtime with --rolling
Configure health checks: Ensure proper health check endpoints
Set appropriate timeouts: Adjust timeouts based on app startup time
Use deployment locks: Prevent concurrent deployments
See Also
deploy exec - Execute deployment after push
deploy status - Check push status
deploy rollback - Rollback pushed artifacts
Last updated
Was this helpful?