Si ejecuto desde la terminal uvicorn main:app --reload todo funciona.
Al ponerlo en un archivo my_script.sh con
#!/bin/bash exec uvicorn main:app --reloadentonces no pasa nada. ¿Por qué?
Encontré esto: ejecutable Uvicorn/FastAPI pero parece sin respuesta.
En su lugar, puede agregar un método main (más específicamente, if __name__ == "__main__": ) dentro de su secuencia de comandos de Python existente (es decir, main.py en su caso) o una nueva secuencia de comandos de Python, donde run el servidor uvicorn, lo que le permite para establecer parámetros, como host , port , reload , workers , etc. (como se muestra aquí ), y simplemente ejecute ese script de Python desde dentro de su script bash. Echa un vistazo aquí para ver todas las options disponibles.
import uvicorn if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)Editar : dado que mencionó a continuación que "tiene el script definido en la sección de punto de entrada de docker-compose" , asegúrese de proporcionar la ruta exacta al script bash, así como también tiene permisos para ejecutar. Echa un vistazo a las preguntas aquí y aquí . También sugeriría echar un vistazo a la documentación relevante de FastAPI .