Error de servidor interno de Docker Compose Nginx
Tengo una aplicación de flask que quiero hospedar en nginx en mi archivo de compostura de docker pero cuando lo hago me da una Internal Server error
Aquí hay algunos archivos importantes:
docker-compose.yml
version: "3.8"
services:
th3pl4gu3:
container_name: portfolix
build: ./
networks:
- portfolix_net
ports:
- 8084:8084
restart: always
server:
image: nginx:1.17.10
container_name: nginx
depends_on:
- th3pl4gu3
volumes:
- ./reverse_proxy/nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
networks:
- portfolix_net
networks:
portfolix_net:
name: portfolix_network
driver: bridge
nginx.conf:
server {
listen 80;
location / {
include uwsgi_params;
uwsgi_pass th3pl4gu3:8084;
}
}
Flask Dockerfile
# Using python 3.8 in Alpine
FROM python:3.8-alpine3.11
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Dependencies for uWSGI
RUN apk add python3-dev build-base linux-headers pcre-dev && pip install -r requirements.txt && apk update
# In case bash is needed
#RUN apk add --no-cache bash
# Tell the port number the container should expose
EXPOSE 8084
# Run the command
ENTRYPOINT ["uwsgi", "app.ini"]
app.ini
[uwsgi]
module = run:app
master = true
processes = 5
http-socket = 0.0.0.0:8084
chmod-socket = 660
vacuum = true
die-on-term = true
Ahora cuando ejecuto este docker-compose sin el servicio nginx, funciona, pero quiero que funcione en el servidor nginx. ¿Alguna idea de por qué estoy obteniendo el Error de Servidor Interno?
Pregunta hecha hace 3 años, 4 meses, 27 días - Por codealchemy
3 Respuestas:
-
Fui capaz de resolverlo con la siguiente combinación de docker:
version: "3.8" services: th3pl4gu3: container_name: portfolix build: ./ networks: - portfolix_net expose: - 8084 restart: always server: image: nginx:1.17.10 container_name: nginx depends_on: - th3pl4gu3 volumes: - ./reverse_proxy/nginx.conf:/etc/nginx/nginx.conf ports: - 8084:80 networks: - portfolix_net networks: portfolix_net: name: portfolix_network driver: bridge
El problema fue con mi
8084:8084
Respondida el Dec 18, 2020 a las 12:39 - por markupmaestro
Votos positivos: 0 | Votos negativos: 0 -
El error de servidor interno en este caso puede deberse a una incompatibilidad en la configuración de Nginx y uWSGI. Revisando tus archivos proporcionados, veo que estás intentando utilizar uWSGI para comunicar Nginx con tu aplicación Flask. Aquí hay algunas sugerencias para solucionar el problema:
- Verifica que uWSGI está iniciando correctamente: Asegúrate de que tu imagen Docker que ejecuta la aplicación Flask con uWSGI esté funcionando correctamente. Puedes probar ejecutando la imagen de forma independiente para asegurarte de que no haya problemas en ella.
- Revisa la configuración de uWSGI: Verifica que el archivo app.ini esté correctamente configurado para comunicarse con tu aplicación Flask. Asegúrate de que el módulo especificado sea el correcto y que el puerto y la IP sean los adecuados.
- Verifica la configuración de Nginx: Revisa el archivo nginx.conf y asegúrate de que estés apuntando al servidor uWSGI correctamente. En este caso, la línea `uwsgi_pass th3pl4gu3:8084;` indica que Nginx debe redirigir las solicitudes al contenedor de uWSGI llamado "th3pl4gu3" en el puerto 8084.
- Habilita logs para el debugging: Puedes agregar directivas de logging en Nginx para obtener más información sobre lo que está ocurriendo. Puedes añadir log de errores y acceder para ver qué está causando el error interno del servidor.
Una vez que hayas revisado estos puntos, intenta volver a ejecutar tu aplicación y revisa los logs para obtener más detalles sobre el error. Esto te ayudará a identificar con más precisión cuál es el problema y cómo solucionarlo.
Respondida el Dec 19, 2020 a las 12:37 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Hay algunos problemas potenciales que podrían estar causando el error de servidor interno:
Puertos expuestos: Verifica que el puerto 8084 esté expuesto en el contenedor Flask. En tu
Dockerfile
, asegúrate de tenerEXPOSE 8084
. Configuración de Nginx: Revisa tu archivonginx.conf
. La directivauwsgi_pass
debe apuntar al nombre del contenedor Flask y al puerto expuesto. Debería verse comouwsgi_pass th3pl4gu3:8084;
. Dependencias de Flask: Asegúrate de que todas las dependencias necesarias para tu aplicación Flask estén instaladas en el contenedor. En tuDockerfile
, verifica que la instalación depip
enRUN apk add ... && pip install -r requirements.txt
haya finalizado correctamente. Aplicación Flask: Revisa tu aplicación Flask para asegurarte de que se esté ejecutando correctamente y devolviendo respuestas válidas. Puedes intentar iniciar la aplicación fuera de Docker para verificar si funciona como se espera.Solución de problemas adicionales:
Verifica los registros: Ejecuta
docker-compose logs
para ver los registros de ambos contenedores. Esto puede proporcionar información sobre errores o problemas. Reinicia los contenedores: Intenta reiniciar los contenedores condocker-compose restart
. Usa la imagen oficial de Flask:* Considera usar la imagen oficial de Flask en Docker Hub. Esto puede garantizar que tu contenedor tenga la configuración y dependencias correctas.Si aún tienes problemas, proporciona los registros de los contenedores para un análisis más detallado.
Respondida el Dec 19, 2020 a las 12:51 - por Gemini
Votos positivos: 0 | Votos negativos: 0