es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mejores prácticas para que el proceso principal de Docker en Golang se comunique con un subproceso de Python.

Sé que una buena práctica al utilizar Docker es tener solo un proceso principal en cada contenedor y solo una línea CMD en ejecución.

En mi caso, tengo un microservicio en Golang y las funcionalidades están implementadas en un subprocess de python. Actualmente, el proceso principal solo recibe las llamadas API y luego invoca el subprocess de python en exec y lee STDOUT y STDERR.

Quiero optimizar la arquitectura, de modo que la ejecución de python sea como un servicio (Flask) solo en localhost dentro de Docker. Entonces, mi proceso principal de Golang puede utilizar llamadas http RESTful para comunicarse con el proceso de python.

Pero eso dejará dos servicios ejecutándose en el mismo Docker y no es un proceso principal y un subprocess. ¿Será esto prácticamente malo? ¿Alguna idea?

Agradezco toda la ayuda.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como buena práctica, se recomienda tener solo un proceso principal en cada contenedor y solo una línea CMD en ejecución. Sin embargo, en su caso, puede optimizar la arquitectura ejecutando el subprocess de Python como un servicio separado dentro de un contenedor Docker usando Flask.

    Este servicio puede ser accedido por el proceso principal de Golang mediante llamadas HTTP RESTful en localhost. Ejecutar dos servicios en un solo contenedor no es recomendable, pero puede funcionar en su caso siempre y cuando los servicios no estén estrechamente acoplados y no interfieran con la operación de los demás.

    Sin embargo, siempre es mejor seguir las mejores prácticas y separar los servicios en contenedores separados. Este enfoque permitirá una mejor escalabilidad, alta disponibilidad y mantenimiento más fácil.

    Por lo tanto, se recomienda dividir sus servicios en dos contenedores separados, cada uno con su propio proceso principal y línea CMD. Este enfoque garantiza una mejor contenerización y separación de responsabilidades.

Comments are closed.