fix: démarrer les applications absentes via compose
This commit is contained in:
@@ -139,11 +139,38 @@ function gitPull(appConfig) {
|
||||
/**
|
||||
* Démarrer un conteneur Docker
|
||||
*/
|
||||
async function startContainer(containerName) {
|
||||
async function startContainer(containerName, appId) {
|
||||
try {
|
||||
// Tenter d'abord un docker start (conteneur existant mais arrêté)
|
||||
const container = docker.getContainer(containerName);
|
||||
const info = await container.inspect().catch(() => null);
|
||||
if (info) {
|
||||
// Le conteneur existe, on le démarre
|
||||
if (!info.State.Running) {
|
||||
await container.start();
|
||||
}
|
||||
return { success: true, message: `Conteneur ${containerName} démarré` };
|
||||
}
|
||||
// Le conteneur n'existe pas : docker compose up dans le répertoire de l'app
|
||||
const id = appId || containerName;
|
||||
const appsBasePath = config.appsBasePath || process.env.APPS_BASE_PATH || '/opt/manus-deploy/apps';
|
||||
const appDir = path.join(appsBasePath, id);
|
||||
const fs = require('fs');
|
||||
const composeFile = fs.existsSync(path.join(appDir, 'docker-compose.yml'))
|
||||
? path.join(appDir, 'docker-compose.yml')
|
||||
: fs.existsSync(path.join(appDir, 'docker-compose.prod.yml'))
|
||||
? path.join(appDir, 'docker-compose.prod.yml')
|
||||
: null;
|
||||
if (!composeFile) {
|
||||
return { success: false, message: `Aucun docker-compose.yml trouvé dans ${appDir}` };
|
||||
}
|
||||
await new Promise((resolve, reject) => {
|
||||
exec(`docker compose -f ${composeFile} up -d`, { cwd: appDir }, (err, stdout, stderr) => {
|
||||
if (err) reject(new Error(stderr || err.message));
|
||||
else resolve(stdout);
|
||||
});
|
||||
});
|
||||
return { success: true, message: `Conteneur ${containerName} créé et démarré via docker compose` };
|
||||
} catch (err) {
|
||||
return { success: false, message: err.message };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user