La mayoría de las veces veo en docker-compose.yml dos servicios separados para ngnix y php, así:
version: '3.3' services: php: image: php ports: - "127.0.0.1:8000:8000" volumes: - ".:/code_folder" networks: - default ngnix: image: ngnix ports: - "127.0.0.1:80:80" volumes: - ".:/code_folder" networks: - defaultSupongo que debe haber una sola imagen que tenga ngnix y php juntos, pero no es un enfoque de uso común. Otra pregunta es: ¿cómo funciona, ya que serán contenedores separados, ambos montando la misma base de código?
Te estás perdiendo el mapeo de tu archivo de configuración de Nginx, que es lo que marca la diferencia.
El archivo de configuración especifica que todas las solicitudes de archivos PHP deben pasarse al contenedor PHP. Todos los archivos que no son PHP son servidos directamente por el contenedor Nginx.
Porque cada contenedor debe ejecutar un solo servicio. El patrón de diseño debe ser que ejecuta un servicio y luego, cuando se completa, se detiene. Simplemente sucede que nginx y php necesitan escuchar continuamente y, por lo tanto, no se detienen naturalmente