Docker Nginx + PHP-FPM Ошибка Fastcgi Заголовок - PullRequest
0 голосов
/ 27 ноября 2018

Я создаю проект PHP (Phalcon), используя docker compose.Изображение адаптировано на основе проекта webdevops .На нашем производстве, в постановке и на моей собственной машине конфигурация docker-compose работает нормально.Но есть ошибка в одном из моих командных компьютеров, несмотря на похожий конфиг, и мы используем один и тот же образ.

Вот 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

ВотДокер записывает в журнал мою команду:

-> 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"

Сначала я предполагаю, что это была проблема с памятью, но когда я проверяю, на машине достаточно свободной памяти.Также phpMyAdmin и другие контейнеры работают нормально.Если это был код, то он обязательно сломается и в других средах, но не сломается, даже на нашем промежуточном сервере или сервере prod.

Итак, в настоящее время я в тупике, в чем именно причина.Поскольку эта же конфигурация была протестирована в ArchLinux, Ubuntu 18.04, CentOS 7 и Windows 10, и она работает нормально, но для некоторых других она работает не так, как ожидалось.Кто-нибудь может мне помочь?

...