db upgrade: stop containers only after exporting

we cannot export if the containers were nuked in the platform logic.
for this reason, move the removal near the place where they get started.
This commit is contained in:
Girish Ramakrishnan
2020-07-30 14:36:11 -07:00
parent b0d65a1bae
commit d089444441
5 changed files with 70 additions and 63 deletions
+24 -29
View File
@@ -10,8 +10,6 @@ var apps = require('./apps.js'),
async = require('async'),
debug = require('debug')('box:sftp'),
infra = require('./infra_version.js'),
path = require('path'),
paths = require('./paths.js'),
shell = require('./shell.js');
function startSftp(existingInfra, callback) {
@@ -55,34 +53,31 @@ function rebuild(options, callback) {
debug('app volume mounts', dataDirs);
const appDataVolumes = dataDirs.map(function (v) { return `-v "${v.hostDir}:${v.mountDir}"`; }).join(' ');
const cmd = `docker run --restart=always -d --name="sftp" \
--hostname sftp \
--net cloudron \
--net-alias sftp \
--log-driver syslog \
--log-opt syslog-address=udp://127.0.0.1:2514 \
--log-opt syslog-format=rfc5424 \
--log-opt tag=sftp \
-m ${memoryLimit}m \
--memory-swap ${memoryLimit * 2}m \
--dns 172.18.0.1 \
--dns-search=. \
-p 222:22 \
${appDataVolumes} \
-v "/etc/ssh:/etc/ssh:ro" \
--label isCloudronManaged=true \
--read-only -v /tmp -v /run "${tag}"`;
// ignore error if container not found (and fail later) so that this code works across restarts
async.series([
shell.exec.bind(null, 'stopSftpContainer', 'docker stop sftp || true'),
shell.exec.bind(null, 'stopSftpContainer', 'docker rm -f sftp || true')
], function (error) {
if (error) debug('Failed to stop sftp container. Possibly not running.');
const appDataVolumes = dataDirs.map(function (v) { return `-v "${v.hostDir}:${v.mountDir}"`; }).join(' ');
const cmd = `docker run --restart=always -d --name="sftp" \
--hostname sftp \
--net cloudron \
--net-alias sftp \
--log-driver syslog \
--log-opt syslog-address=udp://127.0.0.1:2514 \
--log-opt syslog-format=rfc5424 \
--log-opt tag=sftp \
-m ${memoryLimit}m \
--memory-swap ${memoryLimit * 2}m \
--dns 172.18.0.1 \
--dns-search=. \
-p 222:22 \
${appDataVolumes} \
-v "/etc/ssh:/etc/ssh:ro" \
--label isCloudronManaged=true \
--read-only -v /tmp -v /run "${tag}"`;
shell.exec('startSftp', cmd, callback);
});
shell.exec.bind(null, 'stopSftp', 'docker stop sftp || true'),
shell.exec.bind(null, 'removeSftp', 'docker rm -f sftp || true'),
shell.exec.bind(null, 'startSftp', cmd)
], callback);
});
}