2015-06-12 21 views
7

Sto avendo una finestra mobile per configurare un contenitore di database, un contenitore di applicazioni e un contenitore che precarica il database con i dati necessari.Docker Componi con un contenitore di terminazione

Desidero avviare tutti i contenitori insieme a docker-compose up mentre il contenitore di precaricamento termina dopo aver completato il lavoro con exit 0.

Ma terminare questo un contenitore porta giù il setup completo con il messaggio:

composesetup_load_1 exited with code 0 
Gracefully stopping... (press Ctrl+C again to force) 
Stopping composesetup_app_1... 
Stopping composesetup_db_1... 

C'è un modo di avere più contenitori con diverso tempo di vita in una configurazione finestra mobile-composizione? Se sì, come?

risposta

4

La mia soluzione per ora è quella di mantenere il contenitore di precaricamento in esecuzione aggiungendo tail -f /dev/null alla fine dello script del punto di accesso. Ciò mantiene il processo in esecuzione, mentre non accade nulla di concreto.

+0

Mossa fluida, amico. – Neil

+0

È un metodo comune per fare questo genere di cose? C'è un modo "giusto"/"ufficiale" per farlo? Adoro questa soluzione lucida, in entrambi i casi. – IcyFlame

0

L'utilizzo di -d option a docker-compose up -d eseguirà il processo in modalità indipendente. Questo evita la necessità di uccidere il servizio con Ctrl + C e quindi interrompere i contenitori.

Nota: Sto facendo in modo che tu abbia ucciso il processo con Ctrl + C dal messaggio "Gracefully stopping... (press Ctrl+C again to force)" che hai condiviso.

+1

No, non ho terminato il processo con Ctrl + C il processo ha appena completato il suo lavoro e termina quindi con 'exit 0'. Quindi eseguire la finestra mobile-comporre con l'opzione '-d' non è una soluzione. –

+1

@white_gecko, ok, grazie per aver chiarito. Il comportamento è quindi come se il flag '--abort-on-container-exit' fosse impostato? – atfornes

+1

Ok, forse questa bandiera è una soluzione ... quando ho postato la domanda almeno questo comportamento era predefinito. –