MCPcopy
hub / github.com/Dokploy/dokploy / restoreComposeBackup

Function restoreComposeBackup

packages/server/src/utils/restore/compose.ts:14–102  ·  view source on GitHub ↗
(
	compose: Compose,
	destination: Destination,
	backupInput: z.infer<typeof apiRestoreBackup>,
	emit: (log: string) => void,
)

Source from the content-addressed store, hash-verified

12}
13
14export const restoreComposeBackup = async (
15 compose: Compose,
16 destination: Destination,
17 backupInput: z.infer<typeof apiRestoreBackup>,
18 emit: (log: string) => void,
19) => {
20 try {
21 if (backupInput.databaseType === "web-server") {
22 return;
23 }
24 const { serverId, appName, composeType } = compose;
25
26 const rcloneFlags = getS3Credentials(destination);
27 const bucketPath = `:s3:${destination.bucket}`;
28 const backupPath = `${bucketPath}/${backupInput.backupFile}`;
29 let rcloneCommand = `rclone cat ${rcloneFlags.join(" ")} "${backupPath}" | gunzip`;
30
31 if (backupInput.metadata?.mongo) {
32 rcloneCommand = `rclone copy ${rcloneFlags.join(" ")} "${backupPath}"`;
33 }
34
35 let credentials: DatabaseCredentials = {};
36
37 switch (backupInput.databaseType) {
38 case "postgres":
39 credentials = {
40 databaseUser: backupInput.metadata?.postgres?.databaseUser,
41 };
42 break;
43 case "mariadb":
44 credentials = {
45 databaseUser: backupInput.metadata?.mariadb?.databaseUser,
46 databasePassword: backupInput.metadata?.mariadb?.databasePassword,
47 };
48 break;
49 case "mysql":
50 credentials = {
51 databasePassword: backupInput.metadata?.mysql?.databaseRootPassword,
52 };
53 break;
54 case "mongo":
55 credentials = {
56 databaseUser: backupInput.metadata?.mongo?.databaseUser,
57 databasePassword: backupInput.metadata?.mongo?.databasePassword,
58 };
59 break;
60 }
61
62 const restoreCommand = getRestoreCommand({
63 appName: appName,
64 serviceName: backupInput.metadata?.serviceName,
65 type: backupInput.databaseType as
66 | "postgres"
67 | "mariadb"
68 | "mysql"
69 | "mongo",
70 credentials: {
71 database: backupInput.databaseName,

Callers 1

runRestoreFunction · 0.90

Calls 4

getS3CredentialsFunction · 0.90
getRestoreCommandFunction · 0.90
execAsyncRemoteFunction · 0.90
execAsyncFunction · 0.90

Tested by

no test coverage detected