Tengo una aplicación Flask Python que se ejecuta a través de Gunicorn desde un contenedor Docker Linux. La ejecución del contenedor Docker en Ubuntu funciona bien localmente, pero cuando el contenedor se envía al Registro de contenedores de Azure y luego se implementa como una aplicación de Azure, falla con los siguientes mensajes de error:
- El contenedor my-app_900f4c para el sitio my-app no se inició dentro del límite de tiempo esperado.
- El contenedor my-app_900f4c no respondió a los pings HTTP en el puerto: 80, no se pudo iniciar el sitio.
Registro de Docker
2020-02-17 INFO - Pull Image successful, Time taken: 0 Minutes and 15 Seconds2020-02-17 INFO - Starting container for site2020-02-17 INFO - docker run -d -p 9031:80 --name my-app_900f4c -e PORT=80 -e WEBSITES_PORT=80 -e WEBSITE_SITE_NAME=my-app -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=my-app.azurewebsites.net -e WEBSITE_INSTANCE_ID=eaaf...51e441df96704916ba7b506b6150b26cdc7 -e HTTP_LOGGING_ENABLED=1 myazureappregistry.azurecr.io/my_app:v1 2020-02-17 INFO - Initiating warmup request to container my-app_900f4c for site my-app2020-02-17 ERROR - Container my-app_900f4c for site my-app did not start within expected time limit. Elapsed time = 255.9515056 sec2020-02-17 ERROR - Container my-app_900f4c didn't respond to HTTP pings on port: 80, failing site start. See container logs for debugging.2020-02-17 INFO - Stopping site my-app because it failed during startup.
Registro de Docker Predeterminado
2020-02-17 [1] [INFO] Starting gunicorn 20.0.42020-02-17 [1] [INFO] Listening at: http://0.0.0.0:80 (1)2020-02-17 [1] [INFO] Using worker: gthread2020-02-17 [7] [INFO] Booting worker with pid: 72020-02-17 [8] [INFO] Booting worker with pid: 82020-02-17 [9] [INFO] Booting worker with pid: 92020-02-17 [10] [INFO] Booting worker with pid: 10
En el Portal de Azure, en Configuración & gt; Configuración Tengo lo siguiente Configuración de la aplicación:
- PUERTO 80
- PÁGINAS WEB_PUERTO 80
Dockerfile
FROM python:3.8-slim-busterLABEL Name=my_app Version=0.0.1EXPOSE 80WORKDIR /appRUN python3 -m pip install --upgrade pipRUN python3 -m pip install -r requirements.txtADD . /appCMD ["gunicorn", "-c", "gunicorn.conf.py", "main:app"]
No entiendo qué está causando los pings HTTP en el puerto 80
para fallar, cuando los registros muestran que Gunicorn está escuchando http://0.0.0.0:80
.
Preguntas similares que tienen ni resuelto el problema:
- Aplicación web de Azure (Linux): "Error: El contenedor no respondió a los pings HTTP en el puerto: 8080" - al usar: "inicio": "pm2 inicia el servidor.js"
- Ejecución de un contenedor docker en Azure web app: no respondió a los pings HTTP en el puerto
- Azure: El contenedor no se inició en el tiempo esperado (aplicación web)