GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare correttamente il supervisore nella finestra mobile

Secondo la documentazione ufficiale:

Ci può essere un solo CMD istruzione in un Dockerfile . Se elenchi più di un CMD poi solo l'ultimo CMD avrà effetto.

E il tuo Dockerfile ha due comandi CMD quindi il comando php-fpm sovrascriverà

/usr/bin/supervisord

In modo che tu possa eseguire i comandi PHP ma non riesci a trovare il socket del supervisore creato nel contenitore.

Puoi risolvere il problema eliminando l'ultimo CMD comando relativo a PHP-FPM come hai già configurato supervisore per avviarlo e il tuo Dockerfile dovrebbe avere un CMD comando:

CMD ["/usr/bin/supervisord"]

L'idea qui è di eliminare il supervisore e invece eseguire qualunque cosa il supervisore eseguisse in diversi contenitori. Puoi facilmente orchestrarlo con docker-compose , ad esempio, tutti eseguono lo stesso contenitore con CMD diversi sostituzioni o lo stesso contenitore con un CMD diverso strato alla fine per dividerlo. Il problema qui è che il supervisore non sarà in grado di comunicare lo stato dei processi che gestisce a Docker. Sarà sempre "vivo" anche se tutti i suoi processi sono completamente distrutti. Esporli direttamente significa che puoi vedere che si sono bloccati.

La cosa migliore è suddividere ciascuno di questi servizi in contenitori separati. Dato che ce ne sono di ufficiali pre-costruiti per MySQL e così via, non c'è davvero alcun motivo per crearne uno tu stesso. Quello che vuoi fare è tradurre quel supervisord config a docker-compose formato.

Con contenitori separati puoi fare cose come docker ps per vedere se i tuoi servizi funzionano correttamente, verranno elencati tutti singolarmente. Se hai bisogno di aggiornarne uno, puoi farlo facilmente, lavori solo con quel container, invece di dover smontare tutto.

Il modo in cui lo stai attaccando qui sta trattando Docker come una macchina virtuale di fantasia, cosa che in realtà non è. Quello che è invece è un process manager , in cui questi processi hanno immagini disco predefinite e un livello di sicurezza attorno a loro.

Componi il tuo ambiente da container a processo singolo e la tua vita sarà molto più semplice sia dal punto di vista della manutenzione che del monitoraggio.

Se puoi esprimere questa configurazione come qualcosa docker-compose può gestire, allora sei un passo avanti verso il passaggio a un livello di gestione più sofisticato come Kubernetes, che potrebbe essere la logica conclusione di questa particolare migrazione.


Linux
  1. Come installare e configurare la finestra mobile su Debian 11

  2. Come installare e configurare la finestra mobile in Rocky Linux/Centos 8

  3. Come installare Docker su Ubuntu 18.04?

  4. Come configurare la finestra mobile per utilizzare il proxy

  5. Come configurare macvtap per far passare correttamente il pacchetto multicast?

Come installare e configurare Docker-CE su Ubuntu 18.04 LTS

Come configurare la rete in Vagrant

Come installare e configurare Kitematic su Ubuntu Linux

Come installare e configurare Supervisor su Ubuntu 20.04

Come installare Docker su Ubuntu 18.04

Come configurare gli spazi dei nomi di rete nei contenitori Docker