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

Commit cf0cf4e

Browse files
committed
Add autoprune config and execute prun after deployments if enabled
Closes exoframejs/exoframe#294
1 parent 40c6d41 commit cf0cf4e

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/config/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ const defaultConfig = {
8686
letsencrypt: false,
8787
letsencryptEmail: '[email protected]',
8888
compress: true,
89+
autoprune: false,
8990
baseDomain: false,
9091
cors: false,
9192
updateChannel: 'stable',

src/docker/util.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ exports.pullImage = tag =>
3737
exports.pruneDocker = async () => {
3838
// TODO: re-enable pruneBuilder once fixed in dockerode
3939
// await docker.pruneBuilder();
40+
logger.debug('Running prune..');
4041
const result = await Promise.all([docker.pruneImages(), docker.pruneVolumes()]);
42+
logger.debug('Prune done:', result);
4143
return result;
4244
};

src/routes/deploy.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const logger = require('../logger');
99
const util = require('../util');
1010
const {getConfig, tempDockerDir, faasFolder} = require('../config');
1111
const docker = require('../docker/docker');
12-
const {pullImage} = require('../docker/util');
12+
const {pullImage, pruneDocker} = require('../docker/util');
1313
const {build} = require('../docker/build');
1414
const {start} = require('../docker/start');
1515
const getTemplates = require('../docker/templates');
@@ -90,6 +90,15 @@ const deploy = async ({username, folder, existing, resultStream}) => {
9090
await template.executeTemplate(templateProps);
9191
};
9292

93+
// schedule docker prune for next tick (if enabled in config)
94+
const schedulePrune = () => {
95+
// get server config
96+
const serverConfig = getConfig();
97+
if (serverConfig.autoprune) {
98+
process.nextTick(pruneDocker);
99+
}
100+
};
101+
93102
const scheduleCleanup = ({username, project, existing}) => {
94103
process.nextTick(async () => {
95104
// wait a bit for it to start
@@ -119,6 +128,9 @@ const scheduleCleanup = ({username, project, existing}) => {
119128
const notRemoved = existing.filter(c => !toRemove.find(rc => rc.Id === c.Id));
120129
scheduleCleanup({username, project, existing: notRemoved});
121130
}
131+
132+
// run prune on next tick if enabled in config
133+
schedulePrune();
122134
});
123135
};
124136

@@ -138,7 +150,7 @@ module.exports = fastify => {
138150
// create new highland stream for results
139151
const resultStream = _();
140152
// run deploy
141-
deploy({username, folder, resultStream});
153+
deploy({username, folder, resultStream}).then(() => schedulePrune());
142154
// reply with deploy stream
143155
const responseStream = new Readable().wrap(resultStream);
144156
reply.code(200).send(responseStream);

0 commit comments

Comments
 (0)