Budibase/budibase · error
Unable to retrieve docker-compose file - ${response.status}
Error message
Unable to retrieve docker-compose file - ${response.status} What it means
downloadFile streams an HTTP response (e.g. the docker-compose file) into a file on disk. If the response completed but has no body to pipe, it throws with the response status, indicating the remote resource could not be retrieved.
Source
Thrown at packages/cli/src/utils.ts:21
import path, { join } from "path"
import fetch from "node-fetch"
const progress = require("cli-progress")
export function downloadFile(url: string, filePath: string) {
return new Promise((resolve, reject) => {
filePath = path.resolve(filePath)
fetch(url, {
method: "GET",
})
.then(response => {
const writer = fs.createWriteStream(filePath)
if (response.body) {
response.body.pipe(writer)
response.body.on("end", resolve)
response.body.on("error", reject)
} else {
throw new Error(
`Unable to retrieve docker-compose file - ${response.status}`
)
}
})
.catch(err => {
throw err
})
})
}
export async function httpCall(url: string, method: string) {
const response = await fetch(url, {
method,
})
return response.body
}
export function getHelpDescription(str: string) {View on GitHub (pinned to a81a902e9a)
Solutions
- Check the reported status code in the message and curl the docker-compose URL to confirm availability
- Fix network/proxy settings so the host is reachable, then re-run
- Pin/update the CLI to a version pointing at a valid docker-compose URL
- Retry later if the remote server is temporarily down
Example fix
// diagnose curl -I https://raw.githubusercontent.com/Budibase/budibase/master/hosting/docker-compose.yaml // if 404, update CLI to a version with the corrected URL, then re-run
Defensive patterns
Strategy: try-catch
Validate before calling
const head = await axios.head(COMPOSE_URL)
if (head.status >= 300) throw new Error(`Compose file unavailable: ${head.status}`) Try / catch
try {
await downloadFile(COMPOSE_URL, "./docker-compose.yaml")
} catch (err) {
if ((err as Error).message.startsWith("Unable to retrieve docker-compose file")) {
// inspect status in message; check network/proxy, then retry or use a vendored compose file
} else throw err
} Prevention
- Pre-check the compose URL with curl/HEAD before scripted downloads
- Ensure proxy/VPN allows the host and the URL is current for your CLI version
- Keep a vendored copy of docker-compose.yaml for offline environments
When it happens
Trigger: Calling the CLI utility that downloads the docker-compose file when the axios-style response resolves without a body — typically 4xx/5xx statuses (404, 502) or an empty/failed response for the compose URL.
Common situations: URL for docker-compose moved or 404s; proxy/VPN returning an error page with no body; server outage returning 5xx; offline machine where the request errors out.
Related errors
- Unexpected response when fetching openid-configuration: ${re
- unexpected response ${response.statusText}
- Unexpected response ${response.statusText}
- Failed to retrieve skeleton metadata
- Error getting license: ${message}
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/efb00d7742a75c6c.
Report an issue: GitHub.