Skip to content

Commit 2a5eceb

Browse files
authored
Merge pull request #1432 from Dokploy/1315-show-containers-sorted-by-name
refactor(docker): sort container lists by name
2 parents c89f957 + 08d7c4e commit 2a5eceb

File tree

1 file changed

+88
-80
lines changed

1 file changed

+88
-80
lines changed

packages/server/src/services/docker.ts

Lines changed: 88 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -136,24 +136,26 @@ export const getContainersByAppNameMatch = async (
136136
result = stdout.trim().split("\n");
137137
}
138138

139-
const containers = result.map((line) => {
140-
const parts = line.split(" | ");
141-
const containerId = parts[0]
142-
? parts[0].replace("CONTAINER ID : ", "").trim()
143-
: "No container id";
144-
const name = parts[1]
145-
? parts[1].replace("Name: ", "").trim()
146-
: "No container name";
147-
148-
const state = parts[2]
149-
? parts[2].replace("State: ", "").trim()
150-
: "No state";
151-
return {
152-
containerId,
153-
name,
154-
state,
155-
};
156-
});
139+
const containers = result
140+
.map((line) => {
141+
const parts = line.split(" | ");
142+
const containerId = parts[0]
143+
? parts[0].replace("CONTAINER ID : ", "").trim()
144+
: "No container id";
145+
const name = parts[1]
146+
? parts[1].replace("Name: ", "").trim()
147+
: "No container name";
148+
149+
const state = parts[2]
150+
? parts[2].replace("State: ", "").trim()
151+
: "No state";
152+
return {
153+
containerId,
154+
name,
155+
state,
156+
};
157+
})
158+
.sort((a, b) => a.name.localeCompare(b.name));
157159

158160
return containers || [];
159161
} catch (_error) {}
@@ -190,28 +192,30 @@ export const getStackContainersByAppName = async (
190192
result = stdout.trim().split("\n");
191193
}
192194

193-
const containers = result.map((line) => {
194-
const parts = line.split(" | ");
195-
const containerId = parts[0]
196-
? parts[0].replace("CONTAINER ID : ", "").trim()
197-
: "No container id";
198-
const name = parts[1]
199-
? parts[1].replace("Name: ", "").trim()
200-
: "No container name";
201-
202-
const state = parts[2]
203-
? parts[2].replace("State: ", "").trim().toLowerCase()
204-
: "No state";
205-
const node = parts[3]
206-
? parts[3].replace("Node: ", "").trim()
207-
: "No specific node";
208-
return {
209-
containerId,
210-
name,
211-
state,
212-
node,
213-
};
214-
});
195+
const containers = result
196+
.map((line) => {
197+
const parts = line.split(" | ");
198+
const containerId = parts[0]
199+
? parts[0].replace("CONTAINER ID : ", "").trim()
200+
: "No container id";
201+
const name = parts[1]
202+
? parts[1].replace("Name: ", "").trim()
203+
: "No container name";
204+
205+
const state = parts[2]
206+
? parts[2].replace("State: ", "").trim().toLowerCase()
207+
: "No state";
208+
const node = parts[3]
209+
? parts[3].replace("Node: ", "").trim()
210+
: "No specific node";
211+
return {
212+
containerId,
213+
name,
214+
state,
215+
node,
216+
};
217+
})
218+
.sort((a, b) => a.name.localeCompare(b.name));
215219

216220
return containers || [];
217221
} catch (_error) {}
@@ -249,29 +253,31 @@ export const getServiceContainersByAppName = async (
249253
result = stdout.trim().split("\n");
250254
}
251255

252-
const containers = result.map((line) => {
253-
const parts = line.split(" | ");
254-
const containerId = parts[0]
255-
? parts[0].replace("CONTAINER ID : ", "").trim()
256-
: "No container id";
257-
const name = parts[1]
258-
? parts[1].replace("Name: ", "").trim()
259-
: "No container name";
260-
261-
const state = parts[2]
262-
? parts[2].replace("State: ", "").trim().toLowerCase()
263-
: "No state";
264-
265-
const node = parts[3]
266-
? parts[3].replace("Node: ", "").trim()
267-
: "No specific node";
268-
return {
269-
containerId,
270-
name,
271-
state,
272-
node,
273-
};
274-
});
256+
const containers = result
257+
.map((line) => {
258+
const parts = line.split(" | ");
259+
const containerId = parts[0]
260+
? parts[0].replace("CONTAINER ID : ", "").trim()
261+
: "No container id";
262+
const name = parts[1]
263+
? parts[1].replace("Name: ", "").trim()
264+
: "No container name";
265+
266+
const state = parts[2]
267+
? parts[2].replace("State: ", "").trim().toLowerCase()
268+
: "No state";
269+
270+
const node = parts[3]
271+
? parts[3].replace("Node: ", "").trim()
272+
: "No specific node";
273+
return {
274+
containerId,
275+
name,
276+
state,
277+
node,
278+
};
279+
})
280+
.sort((a, b) => a.name.localeCompare(b.name));
275281

276282
return containers || [];
277283
} catch (_error) {}
@@ -306,23 +312,25 @@ export const getContainersByAppLabel = async (
306312

307313
const lines = stdout.trim().split("\n");
308314

309-
const containers = lines.map((line) => {
310-
const parts = line.split(" | ");
311-
const containerId = parts[0]
312-
? parts[0].replace("CONTAINER ID : ", "").trim()
313-
: "No container id";
314-
const name = parts[1]
315-
? parts[1].replace("Name: ", "").trim()
316-
: "No container name";
317-
const state = parts[2]
318-
? parts[2].replace("State: ", "").trim()
319-
: "No state";
320-
return {
321-
containerId,
322-
name,
323-
state,
324-
};
325-
});
315+
const containers = lines
316+
.map((line) => {
317+
const parts = line.split(" | ");
318+
const containerId = parts[0]
319+
? parts[0].replace("CONTAINER ID : ", "").trim()
320+
: "No container id";
321+
const name = parts[1]
322+
? parts[1].replace("Name: ", "").trim()
323+
: "No container name";
324+
const state = parts[2]
325+
? parts[2].replace("State: ", "").trim()
326+
: "No state";
327+
return {
328+
containerId,
329+
name,
330+
state,
331+
};
332+
})
333+
.sort((a, b) => a.name.localeCompare(b.name));
326334

327335
return containers || [];
328336
} catch (_error) {}

0 commit comments

Comments
 (0)