lift update
Update an installed marketplace tool to a newer version.
lift update
Update an installed marketplace tool to a newer version. Compares the current installed version with the latest from the registry (or a specified target version) and applies the appropriate update strategy.
Usage
lift update <tool>
Options
| Flag | Description | Default |
|---|---|---|
--version | Target version to update to | Latest from registry |
--dry-run | Show what would be done without executing | false |
--var | Override a tool variable (KEY=VALUE) | — |
Update Types
lift update classifies the update based on semantic versioning and applies the appropriate strategy:
| Update Type | Example | Strategy |
|---|---|---|
| Patch | 1.2.3 → 1.2.4 | Run tool's update hook (fallback: compose pull + recreate) |
| Minor | 1.2.3 → 1.3.0 | Run tool's update hook (fallback: compose pull + recreate) |
| Major | 1.2.3 → 2.0.0 | Run migration steps defined in tool manifest |
Patch / Minor Updates
For patch and minor updates, lift update first checks if the tool defines an update hook. If found, it runs that hook (which may include custom migration steps, config updates, etc.). If no update hook is defined, it falls back to:
docker compose pull— pulls the new imagedocker compose up -d --force-recreate— recreates containers with the new image- Health check — waits up to 60 seconds for containers to become healthy
Major Updates
Major version bumps require a migration definition in the tool manifest. If no migration is defined for the version range, the update is blocked and an error is shown. Use --dry-run to check if a migration exists before running.
Examples
# Update to latest version
$ lift update postgresql
Update available: postgresql v15.2.0 → v16.1.0 (minor update)
Running update hook for postgresql...
postgresql updated to v16.1.0
# Update to a specific version
$ lift update redis --version 7.4.0
Update available: redis v7.2.0 → v7.4.0 (minor update)
No update hook defined, using default: compose pull + recreate
Pulling new images...
Recreating containers...
Waiting for containers...
redis updated to v7.4.0
# Dry-run — see what would happen without executing
$ lift update postgresql --dry-run
Update available: postgresql v15.2.0 → v16.1.0 (minor update)
Dry-run mode — no changes will be made
# Already up to date
$ lift update redis
redis is already at version 7.4.0
# Override a variable during update (e.g. change memory limit)
$ lift update postgresql --var MAX_CONNECTIONS=200
How It Works
- Reads current tool state from
/etc/lift/tools/<tool>.jsonon the server - Loads the tool manifest from the registry
- Compares current version with target version (semver classification)
- For minor/patch: runs
updatehook or compose pull + recreate - For major: runs the migration steps defined in the manifest
- Saves updated state (new version,
updatedAt) back to/etc/lift/tools/<tool>.json
Dashboard
You can also update marketplace tools from the OneLift dashboard under the tool's settings panel, which triggers lift update behind the scenes and streams progress in real time.
Related
- lift install - Install a marketplace tool
- lift uninstall - Remove a marketplace tool
- lift scale - Scale a marketplace tool
- lift lifecycle - Start, stop, restart tools