'Docker Nginx + PHP-FPM Error Fastcgi Header

I am creating a PHP(Phalcon) project, using docker compose. The image is tailored based on the webdevops project. In our production, staging, and my own machine, the docker-compose configuration work normally. But there is some error in one of my team machine, despite the similar config, and we are using the same image.

Here is the docker-compose.yml

version: '3'

networks:
  dev_vm:
    external:
      name: dev_vm

services:
  traefik:
    image: traefik:1.6-alpine
    container_name: traefik
    ports:
      - "80:80"
      - "8080:8080"
      - "443:443"
    labels: 
      - traefik.enable=true
      - traefik.frontend.rule=Host:monitor.vm
      - traefik.port=8080
      - traefik.docker.network=dev_vm
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik/traefik.toml:/traefik.toml:ro
      - ./traefik/acme:/etc/traefik/acme
    networks:
      - dev_vm

  mysql:
    image: mariadb:10.2
    container_name: mysql
    ports:
      - "3306:3306"
    networks:
      - dev_vm
    volumes:
      - ./data/mysql:/docker-entrypoint-initdb.d
      - ./var/lib/mysql:/var/lib/mysql
      - ./conf/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    env_file:
        - variables.env

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    container_name: phpmyadmin
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:pma.vm
      - traefik.port=80
      - traefik.docker.network=dev_vm
    depends_on:
      - mysql
    networks:
      dev_vm:
    env_file:
      - variables.env

  queue:
    container_name: queue
    image: gamalan/beanstalk-docker:latest
    ports:
      - "11300:11300"
    networks:
      - dev_vm
    volumes:
      - beanstalk:/var/lib/beanstalkd
    env_file:
      - variables.env

  bean_console:
    container_name: bean_console
    image: kusmierz/beanstalk-console:latest
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:bean.vm
      - traefik.port=80
      - traefik.docker.network=dev_vm
    networks:
      - dev_vm
    depends_on:
      - queue
    env_file:
      - variables.env

  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    environment:
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - dev_vm

  redis:
    container_name: redis
    image: redis:3.2-alpine
    ports:
      - "6379:6379"
    networks:
      - dev_vm
    volumes:
      - redis:/data
      - ./redis_passwd:/run/secrets/redis-pass
    environment:
      REDIS_PASS_FILE: /run/secrets/redis-pass
    command: [
      "sh", "-c",
      '
       docker-entrypoint.sh
       --requirepass "$$(cat $$REDIS_PASS_FILE)"
      '
    ]

  appmain:
    container_name: appmain
    image: gamalan/phalcon-nginx:7.2-dev
    working_dir: /project
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:app.vm
      - traefik.port=80
      - traefik.docker.network=dev_vm
    networks:
      dev_vm:
        aliases:
          - "app.vm"
    volumes:
      - ./application/project:/project
      - ./conf/nginx/location-root.conf:/opt/docker/etc/nginx/vhost.common.d/10-location-root.conf
    #delete unnecessary depend
    depends_on:
      - mysql
      - queue
      - redis
    env_file:
      - app-kirim-main.env

volumes:
  beanstalk:
    driver: local
  redis:
    driver: local
  esdata1:
    driver: local

Here are the docker logs from one my team :

-> Executing /opt/docker/provision/entrypoint.d/05-permissions.sh
-> Executing /opt/docker/provision/entrypoint.d/20-nginx.sh
-> Executing /opt/docker/provision/entrypoint.d/20-php-fpm.sh
-> Executing /opt/docker/provision/entrypoint.d/20-php.sh
-> Executing /opt/docker/provision/entrypoint.d/fix-permission.sh
-> Executing /opt/docker/bin/service.d/supervisor.d//10-init.sh
2018-11-27 02:43:50,891 CRIT Set uid to user 0
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/cron.conf" during parsing
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/dnsmasq.conf" during parsing
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/nginx.conf" during parsing
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/php-fpm.conf" during parsing
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/postfix.conf" during parsing
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/ssh.conf" during parsing
2018-11-27 02:43:50,892 INFO Included extra file "/opt/docker/etc/supervisor.d/syslog.conf" during parsing
2018-11-27 02:43:50,899 INFO RPC interface 'supervisor' initialized
2018-11-27 02:43:50,900 INFO supervisord started with pid 1
2018-11-27 02:43:51,903 INFO spawned: 'syslogd' with pid 50
2018-11-27 02:43:51,904 INFO spawned: 'nginxd' with pid 51
2018-11-27 02:43:51,907 INFO spawned: 'php-fpmd' with pid 52
2018-11-27 02:43:51,909 INFO spawned: 'crond' with pid 53
-> Executing /opt/docker/bin/service.d/syslog-ng.d//10-init.sh
2018-11-27 02:43:51,912 INFO success: nginxd entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
2018-11-27 02:43:51,912 INFO success: php-fpmd entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
2018-11-27 02:43:51,912 INFO success: crond entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
-> Executing /opt/docker/bin/service.d/nginx.d//10-init.sh
-> Executing /opt/docker/bin/service.d/php-fpm.d//10-init.sh
-> Executing /opt/docker/bin/service.d/cron.d//10-init.sh
Setting php-fpm user to application
[SYSLOG] syslog-ng[50]: syslog-ng starting up; version='3.8.1'
[SYSLOG] cron[53]: (CRON) INFO (pidfile fd = 3)
[SYSLOG] cron[53]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
[27-Nov-2018 02:43:51] NOTICE: fpm is running, pid 52
[27-Nov-2018 02:43:51] NOTICE: ready to handle connections
2018-11-27 02:43:52,994 INFO success: syslogd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018/11/27 02:44:04 [error] 69#69: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
[27-Nov-2018 02:44:04] WARNING: [pool www] child 73 exited on signal 4 (SIGILL - core dumped) after 12.033304 seconds from start
[27-Nov-2018 02:44:04] NOTICE: [pool www] child 89 started
127.0.0.1 - - [27/Nov/2018:02:44:04 +0000] "GET / HTTP/1.1" 502 173 "-" "curl/7.52.1"
2018/11/27 02:44:27 [error] 69#69: *3 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
127.0.0.1 - - [27/Nov/2018:02:44:27 +0000] "GET / HTTP/1.1" 502 173 "-" "curl/7.52.1"
[27-Nov-2018 02:44:27] WARNING: [pool www] child 74 exited on signal 4 (SIGILL - core dumped) after 35.759019 seconds from start
[27-Nov-2018 02:44:27] NOTICE: [pool www] child 92 started
2018/11/27 02:45:50 [error] 69#69: *5 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /index.php?_url=/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
127.0.0.1 - - [27/Nov/2018:02:45:50 +0000] "GET /index.php?_url=/ HTTP/1.1" 502 173 "-" "curl/7.52.1"
[27-Nov-2018 02:45:50] WARNING: [pool www] child 88 exited on signal 4 (SIGILL - core dumped) after 106.809806 seconds from start
[27-Nov-2018 02:45:50] NOTICE: [pool www] child 152 started
2018/11/27 02:45:56 [error] 69#69: *7 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /index.php?_url=dashboard HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
127.0.0.1 - - [27/Nov/2018:02:45:56 +0000] "GET /index.php?_url=dashboard HTTP/1.1" 502 173 "-" "curl/7.52.1"
[27-Nov-2018 02:45:56] WARNING: [pool www] child 89 exited on signal 4 (SIGILL - core dumped) after 112.188027 seconds from start
[27-Nov-2018 02:45:56] NOTICE: [pool www] child 155 started
127.0.0.1 - - [27/Nov/2018:02:46:34 +0000] "GET /maintenance.html HTTP/1.1" 200 2178 "-" "curl/7.52.1"
2018/11/27 02:47:11 [error] 69#69: *10 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
[27-Nov-2018 02:47:11] WARNING: [pool www] child 92 exited on signal 4 (SIGILL - core dumped) after 163.832662 seconds from start
127.0.0.1 - - [27/Nov/2018:02:47:11 +0000] "GET / HTTP/1.1" 502 173 "-" "curl/7.52.1"
[27-Nov-2018 02:47:11] NOTICE: [pool www] child 160 started
[php-fpm:access] 127.0.0.1 -  27/Nov/2018:02:48:27 +0000 "GET /info.php" 200 /project/public/info.php 914.436 2048 10.94%
127.0.0.1 - - [27/Nov/2018:02:48:27 +0000] "GET /info.php HTTP/1.1" 200 132955 "-" "curl/7.52.1"
[php-fpm:access] 127.0.0.1 -  27/Nov/2018:02:48:47 +0000 "GET /info.php" 200 /project/public/info.php 60.519 2048 99.14%
172.22.0.4 - - [27/Nov/2018:02:48:47 +0000] "GET /info.php HTTP/1.1" 200 33154 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0"

At first, I assume it was a memory problem, but when I check, the machine has enough free memory. Also, the phpMyAdmin and other container are working normally. If it was the code, then it will definitely break in other environments too, yet it doesn't break, even in our staging or prod server.

So, currently, I am stumped, what exactly the cause. Because this same configuration is have been tested in ArchLinux, Ubuntu 18.04, CentOS 7, and Windows 10, and it working normally, but somehow for a few other, it doesn't work as expected. Can anybody help me?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source