AWS ECS: redes entre el contenedor Nginx y PHP-FPM en el mismo host

AWS ECS: redes entre el contenedor Nginx y PHP-FPM en el mismo host

Así que pasé las últimas dos semanas aprendiendo sobre ECS e intentando configurar una tarea muy básica con un contenedor nginx y una aplicación PHP en otro contenedor. Parece que estoy muy cerca, pero ahora recibo este error de conexión rechazada de nginx: **[error] 29#29: *9 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.16.34, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://172.17.0.4:8000", host: "##########:48152"**

Aquí está la definición de mi tarea de mi plantilla de CloudFormation:

     ContainerDefinitions:
        - Name: nginx
          Cpu: 10
          Essential: true
          Image: ###################
          Memory: 128
          MountPoints:
            - ContainerPath: /var/www
              SourceVolume: my-vol
          PortMappings:
            - ContainerPort: 80
          Links:
            - app
        - Name: app
          Cpu: 10
          Essential: true
          Image: #############
          Memory: 128
          MountPoints:
            - ContainerPath: /var/www
              SourceVolume: my-vol
          PortMappings:
            - ContainerPort: 8000
      Volumes:
        - Name: my-vol
          DockerVolumeConfiguration:
            Scope: task
            Driver: local

Mi archivo Docker nginx:

FROM nginx:alpine
RUN apk update && apk add bash
COPY ./default.conf /etc/nginx/conf.d/default.conf

El archivo de configuración:

server {
    listen 80;
    listen 443;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:8000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

Y mi aplicación Dockerfile:

FROM php:8.2-fpm
...
EXPOSE 8000

Entonces, ¿por qué estoy usando el modo puente? Bueno, todos los ejemplos que pude encontrar usaban el modo puente, y sé que se supone que esto es como usar redes en Docker, que en realidad hice funcionar localmente, así que pensé que parecía la solución más simple. Además, sí, sé que el uso de enlaces está en desuso, pero no pude encontrar ninguna alternativa recomendada.

Entonces puedo ver que nginx puede resolver el host de la aplicación en la dirección IP del contenedor, así que supongo que tal vez el problema esté en el lado PHP-FPM, aunque en los registros de mi aplicación veo fpm is runningy ready to handle connections. De todos modos, no quiero perder el tiempo haciendo cambios cuyas consecuencias no entiendo completamente. Entonces, si alguien pudiera explicar qué está pasando, sería genial.

información relacionada