Tengo el contenedor de aplicaciones Flask que debe ejecutarse en el puerto 5000 .

También tengo un proceso en segundo plano que está relacionado con la cola. Este proceso tiene un bucle infinito, por eso quiero ejecutarlo en segundo plano.

Estoy usando el archivo docker-compose.yml para crear un contenedor. Por ahora, solo puedo ejecutar un comando que consiste en hacer funcionar el servidor de matraz.

flask run --host=0.0.0.0 --port 5000. Estoy usando la opción command en docker-compose.

Este es el comando que quiero ejecutar en segundo plano python app/workload/services/queue_services.py > qlog.txt.

Cuando pongo el comando de fondo primero en command, el servidor no aparece y solo veo la salida del script de fondo.

Cuando pongo el comando flask run primero, el script de fondo no está comenzando en absoluto.

¿Hay alguna forma adecuada de ejecutar estos dos comandos al iniciar el contenedor?

0
Jarvis 3 oct. 2019 a las 16:51

3 respuestas

La mejor respuesta

Crear un script.sh

#!/bin/bash
python app/workload/services/queue_services.py > qlog.txt &
flask run --host=0.0.0.0 --port 5000

Y configúralo como tu comando

3
LinPy 3 oct. 2019 a las 13:54

Otro enfoque podría ser utilizar un programa como supervisor. De esta manera, podemos escalarlo a múltiples servicios sin modificar el Dockerfile

https://docs.docker.com/config/containers/multi-service_container/

He compilado una imagen con supervisor y jre. https://hub.docker.com/r/palashgoel/supervisord-jre

0
Palash Goel 4 oct. 2019 a las 10:28

Intenta agregar

CMD ["gunicorn", "--bind=0.0.0.0:5000", "--workers=1", "wsgi"]

En DockerFile

0
Stefano 3 oct. 2019 a las 15:00
58220616