GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar supervisor en docker correctamente

Según la documentación oficial:

Solo puede haber un CMD instrucción en un Dockerfile . Si incluye más de un CMD entonces solo los últimos CMD entrará en vigor.

Y su Dockerfile tiene dos comandos CMD, por lo que el comando php-fpm anulará

/usr/bin/supervisord

Para que pueda ejecutar comandos PHP pero no puede encontrar el socket del supervisor creado en el contenedor.

Puede solucionar su problema eliminando los últimos CMD comando relacionado con PHP-FPM como ya configuró supervisor para iniciarlo y su Dockerfile debe tener un CMD comando:

CMD ["/usr/bin/supervisord"]

La idea aquí es eliminar al supervisor y, en su lugar, ejecutar lo que el supervisor solía ejecutar en varios contenedores diferentes. Puedes orquestar esto fácilmente con docker-compose , por ejemplo, todos ejecutando el mismo contenedor con diferentes CMD overrides, o el mismo contenedor con un CMD diferente capa al final para dividirlo. El problema aquí es que el supervisor no podrá comunicar el estado de los procesos que administra a Docker. Siempre estará "vivo", incluso si todos sus procesos están completamente destrozados. Exponerlos directamente significa que puedes ver que fallaron.

Lo mejor es dividir cada uno de estos servicios en contenedores separados. Dado que hay oficiales preconstruidos para MySQL, etc., realmente no hay razón para construir uno usted mismo. Lo que quieres hacer es traducir ese supervisord configuración a docker-compose formato.

Con contenedores separados puedes hacer cosas como docker ps para ver si sus servicios se ejecutan correctamente, todos se enumerarán individualmente. Si necesita actualizar uno, puede hacerlo fácilmente, simplemente trabaje con ese contenedor, en lugar de tener que desmontarlo todo.

La forma en que lo está atacando aquí es tratar a Docker como una máquina virtual elegante, que en realidad no lo es. Lo que es en cambio es un gestor de procesos , donde estos procesos tienen imágenes de disco preconstruidas y una capa de seguridad a su alrededor.

Componga su entorno a partir de contenedores de un solo proceso y su vida será mucho más fácil tanto desde una perspectiva de mantenimiento como de supervisión.

Si puede expresar esta configuración como algo docker-compose puede manejar, entonces está un paso más cerca de pasar a una capa de administración más sofisticada como Kubernetes, que podría ser la conclusión lógica de esta migración en particular.


Linux
  1. Cómo salir de un contenedor Docker

  2. Cómo configurar docker para usar proxy

  3. Cómo configurar Btrfs como motor de almacenamiento en Docker

  4. ¿Cómo configurar macvtap para permitir que pase el paquete de multidifusión correctamente?

  5. Cómo salir de todos los procesos de supervisor si uno salió con 0 resultados

Cómo instalar y configurar Docker-CE en Ubuntu 18.04 LTS

Cómo configurar redes en Vagrant

Cómo instalar y configurar Kitematic en Ubuntu Linux

Cómo instalar y configurar Supervisor en Ubuntu 20.04

Cómo instalar Docker en Ubuntu 18.04

Cómo configurar espacios de nombres de red en contenedores Docker