wodby migrate wodby1 instance
Preview, apply, or verify a Wodby 1 instance migration
Migrate exactly one Wodby 1 app instance. The default command is a read-only preview. Add --apply to create the target and import data, then test the target using its technical route. Change DNS only after testing succeeds, and rerun the same command with --verify to validate the completed migration. The migration exports only the selected instance and its parent app metadata, then creates a new Wodby 2 app containing that instance. Pass --target-app to add it to an existing Wodby 2 app instead; the CLI infers the app's shared stack when unambiguous and never adopts or overwrites an existing app instance. By default it imports the newest successful backup file for each required component shown in the preview. Use --source-backup BACKUP_UUID to pin all components to a different complete snapshot, or --skip-data to omit data. Changes made after the selected backup completed are not migrated. Apply is resumable and stores its plan and state in the system temporary directory. When state exists, the same --apply command preserves the saved plan and continues completed work. --apply --restart replaces the saved plan. If the migration already changed Wodby 2, the CLI first shows and confirms removal of only the resources recorded as created by this migration; pre-existing target apps and reused resources are preserved. Restart is refused after successful verification or while any target operation remains ambiguous. --rollback deletes the Wodby 2 resources this migration created and discards its state; it refuses once --verify has succeeded, because DNS then points at Wodby 2.
Usage
wodby migrate wodby1 instance SOURCE_INSTANCE_UUID [flags]
Examples
export WODBY1_SOURCE_TOKEN=...
export WODBY_API_KEY=...
wodby migrate wodby1 instance INSTANCE_UUID --target-cluster CLUSTER [target and mapping options]
wodby migrate wodby1 instance INSTANCE_UUID --target-app APP --target-cluster CLUSTER [target and mapping options]
wodby migrate wodby1 instance INSTANCE_UUID --target-cluster CLUSTER [same options] --apply
wodby migrate wodby1 instance INSTANCE_UUID --target-cluster CLUSTER [same options] --verify
Options
| Flag | Description | Default |
|---|---|---|
--add-missing-services |
Add mapped services missing from the target stack when an exact Wodby 2 service is available | true |
--allow-unsupported-drupal |
Allow Drupal 8/9 when the nginx preset does not identify Drupal 10 or newer and you have independently confirmed the application was upgraded | false |
--apply |
Create the target and import data using the displayed plan | false |
-h, --help |
help for instance | false |
-o, --output string |
Output format: text or json | text |
--poll-interval duration |
Target operation polling interval | 2s |
--restart |
Replace the saved plan, safely removing migration-created target resources first when necessary (requires --apply) | false |
--retry-ambiguous string |
Retry exactly one inspected ambiguous operation ID | - |
--rollback |
Delete the Wodby 2 resources this migration created and discard its resume state | false |
--skip-code |
Intentionally omit repository/build-source migration | false |
--skip-data |
Intentionally omit database and files imports | false |
--source-backup stringArray |
Select a successful Wodby 1 BACKUP_UUID for this instance | [] |
--source-base-url string |
Wodby 1 API base URL | https://api.wodby.com |
--source-token string |
Wodby 1 API token (defaults to WODBY1_SOURCE_TOKEN) | - |
--state-file string |
Secure resume-state path (defaults to the system temporary directory) | - |
--target-app string |
Existing Wodby 2 app ID or exact name to receive this instance | - |
--target-ci-integration-id int |
Wodby 2 CI integration ID override (otherwise Wodby CI with a linked repository, or automatic Custom CI fallback) | 0 |
--target-cluster string |
Wodby 2 cluster ID or exact name | - |
--target-code-service string |
Target connect-build service name when the stack has more than one | - |
--target-env-map stringArray |
Source-to-target environment mapping (SOURCE=TARGET) | [] |
--target-git-integration-id int |
Optional Wodby 2 Git integration ID used to find and link the source repository | 0 |
--target-git-ref string |
Git branch, tag, or commit to build (defaults to the source ref) | - |
--target-git-ref-type string |
Git ref type: branch, tag, or commit | - |
--target-import-map stringArray |
Backup-to-import mapping ([APP/][INSTANCE/]COMPONENT=SERVICE:IMPORT) | [] |
--target-project string |
Wodby 2 project ID or exact name (defaults to a project-owned cluster's owner; otherwise organization-owned) | - |
--target-repository-name string |
Exact repository name in the selected Wodby 2 Git integration (defaults to the name derived from the Wodby 1 repository URL) | - |
--target-service-map stringArray |
Source-to-target service mapping ([APP/][INSTANCE/]SOURCE=TARGET) | [] |
--target-stack-id int |
Existing Wodby 2 stack ID override (managed Drupal/WordPress apps get a new catalog stack by default) | 0 |
--target-stack-map stringArray |
Source-to-target stack ID mapping ([APP/][INSTANCE/]SOURCE=TARGET_STACK_ID) | [] |
--target-version-map stringArray |
Source-service version override ([APP/][INSTANCE/]SOURCE_SERVICE=TARGET_VERSION) | [] |
--verify |
Verify the applied migration after testing and DNS cutover | false |
--wait-timeout duration |
Timeout for each target operation | 30m0s |
-y, --yes |
Approve a new migration plan without an interactive prompt | false |
Options inherited from parent commands
| Flag | Description | Default |
|---|---|---|
--access-token string |
Access token | - |
--api-base-url string |
Public REST API base URL | https://apiv2.wodby.com/v1 |
--api-key string |
API key | - |
--ci-config-path string |
Path to CI config | /tmp/.wodby-ci.json |
--verbose |
Verbose output | false |