Riavviare un servizio Docker quando la configuration cambia

Come riavviare un servizio, per esempio dire 'nginx' quando si modifica un file di configuration? Per esempio ho creato Puppet che crea alcuni file cng di nginx e li mette su un volume che è montato sul mio contenitore nginx. Al momento sto utilizzando docker-gen, ma ci sono altri methods?

I contenitori Docker devono essere effimeri. Inoltre, i contenitori Docker "contengono" il process che si sta eseguendo facendo quel process PID 1 all'interno del contenitore. Ciò significa che non esiste un sistema tradizionale init. In realtà, nessun sistema init. E come sai, quando il process all'interno del contenitore esce, il contenitore muore. Quindi, se ci avviciniamo al problema dal punto di vista dell'implementazione di contenitori effimeri, non riavvii il tuo servizio. Si crea un nuovo contenitore utilizzando la configuration modificata. E come indicato nei commenti di thaJeztah, puoi docker restart nginx tuo contenitore per aggiornare la configuration.

Ora, ci sono un paio di modi per martellare questo piolo quadrato in un foro rotondo. Sei meglio di quello … Tuttavia, hai già notato che il docker-gen vi avrà quasi lì. Allo stesso modo, se si prende un'immersione in come funziona l'image jwilder/nginx-proxy , avrai un'idea migliore di come funziona il docker-gen in pratica. Ma probabilmente l'hai già visto, dato che stai già utilizzando il docker-gen .

L'altra opzione è quella di calzare in qualcosa di simile a supervisord . Ci sono molte informazioni su come fare online. Tonnellate di persone hanno fatto questo in passato. E così per altre persone che potrebbero non capire perché questo risolve il problema, supervisord diventa il tuo PID 1 del tuo contenitore e ti permette di riavviare i processi di "nginx" come normalmente, ma senza uccidere il tuo contenitore.