Estoy tratando de configurar dos contenedores docker (sí, separados sin docker-compose): uno con nginx y otro con uwsgi con la aplicación básica de matraz.
Ejecuto contenedores en la misma red dentro de la ventana acoplable
Mi configuración de nginx para el sitio agregado/vinculado a sitios habilitados (todo lo demás es predeterminado):
server { listen 80; server_name 127.0.0.1; location / { include uwsgi_params; uwsgi_pass 0.0.0.0:8080; } }Mi uwsgi.ini
[uwsgi] module = app:app master = true processes = 2 socket = 0.0.0.0:8080El punto de entrada de uwsgi en la ventana acoplable parece
.local/bin/uwsgi --ini uwsgi.iniLos contenedores funcionan bien por sí solos: uwsgi recibe la solicitud en 8080 y nginx recibe las solicitudes esperadas. Sin embargo, cuando intento acceder a 127.0.0.1 obtengo el código de estado 502 y el error de registro de nginx:
1 conexión () falló (111: conexión rechazada) al conectarse al flujo ascendente, cliente: 192.168.4.1, servidor: 127.0.0.1, solicitud: "GET / HTTP/1.1", flujo ascendente: "uwsgi://0.0.0.0:8080 ", servidor: "127.0.0.1"
Al buscar en Google, encuentro una solución que prefiere usar un contenedor y some_socket.sock como archivo o usar docker compose. Aparentemente problema con los permisos, pero no se como solucionarlos ni diagnosticar.
Lanzo contenedores con estos comandos:
docker run --network app_network --name nginx --rm -p 80:80 my_nginx docker run --network app_network --name flaskapp --rm -p 8080:8080 my_uwsgiEDITAR
Simplemente puede usar el nombre de host del contenedor docker en la directiva uwsgi_pass ya que ambos contenedores docker están en la misma subred.
location / { include uwsgi_params; uwsgi_pass flaskapp:8080; } 0.0.0.0 no es la dirección IP del servidor, esencialmente le dice al servidor que se aloje en cada IP que el dispositivo haya asignado.
Para conectarse a él desde nginx, deberá usar la dirección IP del contenedor en su lugar.
Puede encontrar la dirección IP del contenedor que ejecuta uWsgi con el siguiente comando:
docker inspect CONTAINER_IDDonde CONTAINER_ID es el ID del contenedor en el que inició uwsgi.
Desde aquí puede actualizar la configuración de nginx de la siguiente manera:
uwsgi_pass IP_ADDRESS:8080;Donde IP_ADDRESS es la que encontraste en el comando anterior
También puede configurar la dirección IP del contenedor cuando lo inicia con la siguiente opción
--ip <ip>Tenga cuidado, sin embargo, para asegurarse de que la dirección IP que configuró esté en la misma subred que la IP estándar asignada.