Skip to content
This repository was archived by the owner on Nov 23, 2022. It is now read-only.

Commit 40c6d41

Browse files
committed
Add basic system prune endpoint
Addresses exoframejs/exoframe#294
1 parent f56445a commit 40c6d41

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

src/docker/util.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,11 @@ exports.pullImage = tag =>
3232
stream.once('end', () => resolve(log));
3333
});
3434
});
35+
36+
// prunes builder cache, unused images and volumes
37+
exports.pruneDocker = async () => {
38+
// TODO: re-enable pruneBuilder once fixed in dockerode
39+
// await docker.pruneBuilder();
40+
const result = await Promise.all([docker.pruneImages(), docker.pruneVolumes()]);
41+
return result;
42+
};

src/routes/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const version = require('./version');
88
const templates = require('./templates');
99
const setup = require('./setup');
1010
const secrets = require('./secrets');
11+
const system = require('./system');
1112

1213
module.exports = (fastify, opts, next) => {
1314
// enable auth for all routes
@@ -22,6 +23,7 @@ module.exports = (fastify, opts, next) => {
2223
templates(fastify);
2324
setup(fastify);
2425
secrets(fastify);
26+
system(fastify);
2527

2628
next();
2729
};

src/routes/system.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// our modules
2+
const {pruneDocker} = require('../docker/util');
3+
4+
module.exports = fastify => {
5+
fastify.route({
6+
method: 'POST',
7+
path: '/system/prune',
8+
async handler(request, reply) {
9+
const result = await pruneDocker();
10+
reply.send({pruned: true, data: result});
11+
},
12+
});
13+
};

0 commit comments

Comments
 (0)