Merge pull request #3608 from Dokploy/3532-dokploy-is-not-updating

refactor(settings): update dokploy image handling during service update
This commit is contained in:
Mauricio Siu
2026-02-06 21:43:22 -06:00
committed by GitHub
2 changed files with 11 additions and 28 deletions
+11 -14
View File
@@ -12,7 +12,6 @@ import {
DEFAULT_UPDATE_DATA, DEFAULT_UPDATE_DATA,
execAsync, execAsync,
findServerById, findServerById,
getDokployImage,
getDokployImageTag, getDokployImageTag,
getLogCleanupStatus, getLogCleanupStatus,
getUpdateData, getUpdateData,
@@ -22,7 +21,6 @@ import {
paths, paths,
prepareEnvironmentVariables, prepareEnvironmentVariables,
processLogs, processLogs,
pullLatestRelease,
readConfig, readConfig,
readConfigInPath, readConfigInPath,
readDirectory, readDirectory,
@@ -406,18 +404,17 @@ export const settingsRouter = createTRPCRouter({
return true; return true;
} }
await pullLatestRelease(); const data = await getUpdateData(packageInfo.version);
if (data.updateAvailable) {
// This causes restart of dokploy, thus it will not finish executing properly, so don't await it void spawnAsync("docker", [
// Status after restart is checked via frontend /api/health endpoint "service",
void spawnAsync("docker", [ "update",
"service", "--force",
"update", "--image",
"--force", `dokploy/dokploy:${data.latestVersion}`,
"--image", "dokploy",
getDokployImage(), ]);
"dokploy", }
]);
return true; return true;
}), }),
-14
View File
@@ -1,6 +1,5 @@
import { readdirSync } from "node:fs"; import { readdirSync } from "node:fs";
import { join } from "node:path"; import { join } from "node:path";
import { docker } from "@dokploy/server/constants";
import { import {
execAsync, execAsync,
execAsyncRemote, execAsyncRemote,
@@ -26,19 +25,6 @@ export const getDokployImageTag = () => {
return process.env.RELEASE_TAG || "latest"; return process.env.RELEASE_TAG || "latest";
}; };
export const getDokployImage = () => {
return `dokploy/dokploy:${getDokployImageTag()}`;
};
export const pullLatestRelease = async () => {
const stream = await docker.pull(getDokployImage());
await new Promise((resolve, reject) => {
docker.modem.followProgress(stream, (err, res) =>
err ? reject(err) : resolve(res),
);
});
};
/** Returns Dokploy docker service image digest */ /** Returns Dokploy docker service image digest */
export const getServiceImageDigest = async () => { export const getServiceImageDigest = async () => {
const { stdout } = await execAsync( const { stdout } = await execAsync(