louislam/dockge · error · Error
Failed to pull, please check the terminal output for more in
Error message
Failed to pull, please check the terminal output for more information.
What it means
Stack.update() first runs 'docker compose pull' and throws this Error when the pull exits non-zero, before any restart happens. This is almost always an image fetch problem (registry unreachable, auth failure, bad tag) and the details appear in the compose terminal.
Source
Thrown at backend/stack.ts:461
throw new Error("Failed to restart, please check the terminal output for more information.");
}
return exitCode;
}
async down(socket: DockgeSocket) : Promise<number> {
const terminalName = getComposeTerminalName(socket.endpoint, this.name);
let exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", this.getComposeOptions("down"), this.path);
if (exitCode !== 0) {
throw new Error("Failed to down, please check the terminal output for more information.");
}
return exitCode;
}
async update(socket: DockgeSocket) {
const terminalName = getComposeTerminalName(socket.endpoint, this.name);
let exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", this.getComposeOptions("pull"), this.path);
if (exitCode !== 0) {
throw new Error("Failed to pull, please check the terminal output for more information.");
}
// If the stack is not running, we don't need to restart it
await this.updateStatus();
log.debug("update", "Status: " + this.status);
if (this.status !== RUNNING) {
return exitCode;
}
exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", this.getComposeOptions("up", "-d", "--remove-orphans"), this.path);
if (exitCode !== 0) {
throw new Error("Failed to restart, please check the terminal output for more information.");
}
return exitCode;
}
async joinCombinedTerminal(socket: DockgeSocket) {
const terminalName = getCombinedTerminalName(socket.endpoint, this.name);View on GitHub (pinned to f809ae192b)
Solutions
- Read the compose terminal output in Dockge to see the registry error
- Verify the image name/tag exists (docker pull <image> manually)
- Fix registry credentials: docker login, or add proper auth for the agent user
- Check DNS/outbound connectivity from the agent host (curl the registry)
- If rate-limited, authenticate to the registry or wait/backoff before retrying
Example fix
// before
await stack.update(socket);
// after
try {
await stack.update(socket);
} catch (e) {
log.error("update", `Pull failed for '${stack.name}' — verify image tags and registry auth (docker login)`);
throw e;
} Defensive patterns
Strategy: retry
Validate before calling
import { execSync } from "child_process";
function imagesReachable(dir: string): boolean {
try { execSync("docker compose pull --quiet", { cwd: dir }); return true; } catch { return false; }
}
if (!imagesReachable(stack.path)) {
throw new Error("Registry unreachable or auth missing — fix before update");
}
await stack.update(socket); Type guard
function pullOk(exitCode: number | undefined): boolean {
return exitCode === 0;
} Try / catch
try {
await stack.update(socket);
} catch (e) {
log.error("update", "Pull failed — verify image tags exist and registry credentials (docker login), check DNS/rate limits, then retry");
throw e;
} Prevention
- Pin image tags that exist; avoid relying on mutable/deleted tags
- Keep registry credentials valid on every agent host
- Prefer authenticated pulls to avoid Docker Hub rate limits
- Check agent DNS/outbound connectivity before scheduled updates
When it happens
Trigger: compose pull exits non-zero: image not found (wrong/removed tag), registry auth required or expired credentials (docker login), DNS/network failure reaching the registry, rate limiting (Docker Hub 429).
Common situations: Using :latest pointing to a deleted tag; private registry with missing/rotated credentials; Docker Hub rate limits; cluster host with broken DNS or no outbound internet; typo in image name in compose.yaml.
Related errors
- Failed to deploy, please check the terminal output for more
- Failed to delete, please check the terminal output for more
- Failed to start, please check the terminal output for more i
- Failed to stop, please check the terminal output for more in
- Failed to restart, please check the terminal output for more
AI-assisted analysis of louislam/dockge@f809ae192b (2026-08-31).
Data as JSON: /api/errors/0af916973e4f63f6.
Report an issue: GitHub.