Files
fleet/infrastructure/render/README.md
T
Lucas Manuel RodriguezandCopilot Autofix powered by AI 36f73885d8 Bump Render blueprint MySQL to 8.0.44 (#47488) (#48481)
**Related issue:** Resolves #47488

Smoke tested a Render blueprint deploy using this branch:

<img width="655" height="216" alt="Screenshot 2026-06-30 at 12 11 25 PM"
src="https://github.com/user-attachments/assets/7f5b6e76-1aa6-4ae6-b96c-9757f7cf2baf"
/>

## What & why

The Render deployment blueprint provisioned its MySQL service from the
external
[`render-examples/mysql`](https://github.com/render-examples/mysql)
repo, whose Dockerfile pins `mysql/mysql-server:8.0.24`. MySQL 8.0.24
does not support nesting a `UNION` inside the right-hand operand of
another `UNION`, so host-detail queries fail with:

> Error 1235 (42000): This version of MySQL doesn't yet support 'nesting
of unions at the right-hand side'

This surfaced via the Vanta integration hitting `GET
/api/latest/fleet/hosts/:id` on a Render deployment.

This PR switches the `fleet-mysql` service to pull the official
`mysql:8.0.44` image directly (`runtime: image`), removing the
dependency on the external repo. 8.0.44 is Fleet's documented minimum
supported MySQL version and is what `docker-compose.yml` already uses
for dev/CI. The official image honors the same `MYSQL_DATABASE` /
`MYSQL_USER` / `MYSQL_PASSWORD` / `MYSQL_ROOT_PASSWORD` env contract, so
the rest of the blueprint is unchanged.

`8.0.44` (latest 8.0) was chosen over `8.4` so existing deployments
upgrade in place from their current 8.0.24 data volume without a
cross-major manual step.

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`.

## Testing

- [x] QA'd all new/changed functionality manually

Verified locally (Docker) that the failing query shape behaves as
expected across versions:

| Query shape | MySQL 8.0.24 | MySQL 8.0.44 |
|---|---|---|
| `SELECT 1 UNION (SELECT 2)` | works | works |
| `SELECT 1 UNION (SELECT 2 UNION SELECT 3)` | **ERROR 1235** | works |
| `(SELECT 1 UNION SELECT 2) UNION (SELECT 3 UNION SELECT 4)` | **ERROR
1235** | works |

`docker-compose.yml` already runs `mysql:8.0.44` with the same env
contract, so the image swap is a drop-in. Remaining validation on a real
Render Blueprint instance: fresh provision health (`/healthz`, `fleet
prepare db`, `hostport` resolution) and in-place upgrade from an
existing 8.0.24 volume.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Updated the database deployment target to a newer MySQL version,
resolving a Render deployment error related to union nesting.
* Switched the managed database service to use an explicit MySQL 8.0.44
image for more reliable deployments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-30 12:26:57 -03:00

1.9 KiB

Deploy to Render

Fleet deployment guide

This guide outlines the services configured in the Render blueprint for deploying the Fleet system, which includes a web service, a MySQL database, and a Redis server.

Services overview

1. Fleet web service

  • Type: Web
  • Runtime: Image
  • Image: fleetdm/fleet:latest
  • Description: Main web service running the Fleet application, which is deployed using the latest Fleet Docker image. Configured to prepare the database before deployment.
  • Health check path: /healthz
  • Environment variables: Connects to MySQL and Redis using service-bound environment variables.

2. Fleet MySQL database

  • Type: Private service (pserv)
  • Runtime: Image
  • Image: docker.io/library/mysql:8.0.44
  • Disk: 10 GB mounted at /var/lib/mysql
  • Description: MySQL database used by the Fleet web service. Environment variables for database credentials are managed within the service and some are automatically generated.

3. Fleet Redis service

  • Type: Private service (pserv)
  • Runtime: Image
  • Repository: Redis Docker image
  • Description: Redis service for caching and other in-memory data storage needs of the Fleet web service.

Deployment guide

Prerequisites

  • You need an account on Render.
  • Familiarity with Render's dashboard and deployment concepts.

Steps to deploy

Click the deploy on render button or import the blueprint from the Render service deployment dashboard.

Post-deployment

Navigate to the generated URL and run through the initial setup. If you have a license key you can add it post-deploy as an environment variable FLEET_LICENSE_KEY=value in the Fleet service configuration.