page:migrate:render web service:laravel
Migrate Render web service: Laravel
Move Laravel compute from Render web service to Ample, one component at a time. Destination verified on Ample: the app built, started and answered on its public HTTPS URL with encrypted configuration delivered. Source procedure: Copy environment variables and secret files from the Render dashboard into an env file kept out of the repository. Not migrated automatically: Render cron jobs, disks and private-service networking are not migrated; persistent data belongs in a managed database, a bucket or an Ample volume. Cutover: Add the custom domain with ample domain add, update DNS from the Render target, keep the Render service until verified, then suspend it. Rollback: keep the source untouched until you confirm; nothing at the source is changed or deleted by this guide.
Summary
- Migration Source: Render web service
- Framework: Laravel
Resource Requirements
- Compute: primitive:compute
- Database: primitive:postgres
Workflow Steps
- Inventory the source: List what Render web service provides beyond the component you are moving. Out of scope here: Render cron jobs, disks, and private-service networking are not migrated; persistent data belongs in a managed database, a bucket, or an Ample volume.
- Source step 1: Copy environment variables and secret files from the Render dashboard into an env file kept out of the repository.
- Source step 2: Translate the Render build and start commands (or
render.yaml) into the repository's manifest or--build-command/--start. - Source step 3: Note Render-only features in use: background workers, cron jobs, disks, private services.
- Deploy on Ample in parallel:
composer install --no-dev from composer.lock, then FrankenPHP serving public/ (php-server with the index.php fallback) reading PORT on the php-8.5 template. Pass the exported variables with --env; keep the source running. - Validate before cutover: Run the app's own checks and, for data, compare counts and checksums; the example checks are the pattern self-tests (/p/configuration-secrets, /p/relational-records).
- Cut over: Add the custom domain with
ample domain add, update DNS from the Render target, keep the Render service until verified, then suspend it. - Rollback: Point DNS or configuration back to the source. The source was never modified; deletion is a separate, user-executed step after validation.
Examples
Laravel pattern fixture (destination)
- Description: Verified destination basis: Laravel compute.
- Source Reference: tests/deploy-canaries/laravel-patterns
Success Checks
- Destination app responds on its public URL: Kind: http_get, Path: /, Expect: ample canary laravel patterns.
- Configuration-secrets check from the destination example: Kind: http_get, Path: /p/configuration-secrets, Expect: see the pattern fixture checks.
- Relational-records check from the destination example: Kind: http_get, Path: /p/relational-records, Expect: see the pattern fixture checks.
- Data or object counts and checksums match the source: Kind: manual, Expect: operator comparison before cutover.
Limitations
- Documentation only: nothing is executed automatically and no execution binding is offered.
- The source-side procedure is documented from Render web service's standard tooling and was not executed in this catalog's evidence.
- Verified on the php-8.5 template at s-1vcpu-1gb; region, compliance, and request-duration limits are unknown.
Cost Estimate
- Currency: USD
- Monthly Amount: 10.0
- Basis: Size prices from pricing.toml (loaded by the API).
- Components:
- App server: size s-1vcpu-1gb, quantity 1, monthly amount 5.0
- Managed PostgreSQL database: size s-1vcpu-1gb, quantity 1, monthly amount 5.0
- Note: Destination always-on monthly price of the tested sizes; apps auto-pause when idle. Source costs are unknown to Ample.