@@ -116,27 +116,37 @@ export async function composeRebuild(serviceNames, forceBuild = false) {
116116
117117export async function composeFullRestart ( appName ) {
118118 const allServices = await getAllServiceNames ( appName ) ;
119- console . log ( `[full-restart] ${ appName } : services détectés = [${ allServices . join ( ', ' ) } ]` ) ;
119+ console . log ( `[full-restart] ${ appName } : services = [${ allServices . join ( ', ' ) } ]` ) ;
120120
121- // Suppression de tous les containers de l'app (y compris bases de données)
121+ // Suppression de tous les containers
122122 await execFile ( 'docker' , [ 'compose' , '-f' , MAIN_COMPOSE , 'rm' , '-sf' , ...allServices ] , { cwd : APPS_ROOT } ) . catch ( ( ) => { } ) ;
123123 await Promise . all ( allServices . map ( ( n ) => execFile ( 'docker' , [ 'rm' , '-f' , n ] ) . catch ( ( ) => { } ) ) ) ;
124124
125- // Suppression des réseaux orphelins liés à l'app
125+ // Suppression puis recréation d'un réseau dédié propre
126126 const networkName = `${ appName } -net` ;
127- await execFile ( 'docker' , [ 'network' , 'rm' , networkName , `${ appName } _net` ] , { } ) . catch ( ( ) => { } ) ;
128-
129- // Création d'un réseau dédié pour l'app
130- await execFile ( 'docker' , [ 'network' , 'create' , networkName ] , { } ) . catch ( ( ) => { } ) ;
127+ await execFile ( 'docker' , [ 'network' , 'rm' , networkName ] , { } ) . catch ( ( ) => { } ) ;
128+ await execFile ( 'docker' , [ 'network' , 'create' , networkName ] , { } ) ;
131129
132130 // Démarrage de tous les containers
133131 await execFile ( 'docker' , [ 'compose' , '-f' , MAIN_COMPOSE , 'up' , '-d' , ...allServices ] , { cwd : APPS_ROOT } ) ;
134132
135- // Connexion explicite de tous les containers au réseau partagé (quel que soit leur réseau actuel)
136- await Promise . all (
137- allServices . map ( ( n ) => execFile ( 'docker' , [ 'network' , 'connect' , networkName , n ] ) . catch ( ( ) => { } ) )
133+ // Attente que les containers soient créés (3s)
134+ await new Promise ( ( r ) => setTimeout ( r , 3000 ) ) ;
135+
136+ // Connexion forcée de TOUS les containers au réseau partagé
137+ const connectResults = await Promise . all (
138+ allServices . map ( async ( n ) => {
139+ try {
140+ await execFile ( 'docker' , [ 'network' , 'connect' , networkName , n ] ) ;
141+ return `${ n } : connecté` ;
142+ } catch ( e ) {
143+ return `${ n } : ${ e . message . includes ( 'already' ) ? 'déjà connecté' : e . message . split ( '\n' ) [ 0 ] } ` ;
144+ }
145+ } )
138146 ) ;
139- console . log ( `[full-restart] ${ appName } : tous les containers connectés à ${ networkName } ` ) ;
147+
148+ console . log ( `[full-restart] réseau ${ networkName } :` , connectResults ) ;
149+ return { services : allServices , network : networkName , connections : connectResults } ;
140150}
141151
142152const INFRA_COMPOSE_CONTENT = `services:
0 commit comments