Docker, Nginx, PHP-FPM, websoket morozovsk

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 210
Зарегистрирован: 2018.06.01, 09:54

Docker, Nginx, PHP-FPM, websoket morozovsk

Сообщение Chelobaka »

Всем привет.

Yii2 работает у меня на docker. Есть необходимость запустить вебсокет и с этим проблемы.
Не могу разобраться как спроксировать запрос на контейнер php-fpm на котором запустил вебсокет сервер.

docker-compose.yml

Код: Выделить всё


version: '3'
services:
  php-fpm:
    build:
      context: docker/php-fpm
    volumes:
      - ./app:/app
    environment:
      XDEBUG_CONFIG: "remote_host=192.168.250.1 remote_enable=1"
      PHP_IDE_CONFIG: "serverName=Docker"
    networks:
      - internal

  php-cli:
    build:
      context: docker/php-cli
    environment:
      APP_DEBUG: 1
    volumes:
      - ./app:/app
      - ./docker/php-cli/php.ini:/usr/local/etc/php/php.ini
      - composer:/root/.composer/cache                        
    networks:
      - internal

  nginx:
    build:
      context: docker/nginx
    volumes:
      - ./app:/app
    ports:
      - "80:80"
      - "9005:9005"
    depends_on:
      - php-fpm
    networks:
      - internal

  mysql:
    image: mysql:5.7
    ports:
      - "14306:3306"
    environment:
      XDEBUG_CONFIG: remote_host=172.17.0.1
      DOCKER_HOST: tcp://localhost:4243
      MYSQL_DATABASE: test_db
      MYSQL_USER: root
      MYSQL_PASSWORD: 12345
      MYSQL_ROOT_PASSWORD: 12345
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./data/back:/var/back
    networks:
      - internal

 networks:
  internal:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.250.0/28

volumes:
  composer:    
конфиг nginx

Код: Выделить всё

    server {
        charset utf-8;
        client_max_body_size 128M;
        sendfile off;

        listen 80;
        server_name front.site;
        root        /app/frontend/web/;
        index       index.php;

        location / {
            try_files $uri /index.php?$args;
        }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php-fpm:9000;
            fastcgi_index index.php;
            fastcgi_read_timeout 1000;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }

    server {
        charset utf-8;
        client_max_body_size 128M;
        sendfile off;

        listen 80;
        server_name admin.site;
        root        /app/backend/web/;
        index       index.php;

        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php-fpm:9000;
            fastcgi_index index.php;
            fastcgi_read_timeout 1000;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }

конфиг вебсокета

Код: Выделить всё


'websocket' => [
            'class' => 'morozovsk\yii2websocket\Connection',
            'servers' => [
                'chat' => [
                    'class' => 'console\websocket\MyWebsocketDaemonHandler',
                    'pid' => '/tmp/websocket_chat_cloud.pid',
                    'websocket' => 'tcp://0.0.0.0:9005',
                    'localsocket' => 'tcp://0.0.0.0:9011',
                ],
                
Получается что сайт работает на 80 порту.
NGINX слушает 80 и 9005, а также проксирует запросы на php-fpm на 9000 порт

Вебсокет morozovsk запущен в nohup в контейнере pfp-fpm, в настройках 9005 порт
Подключиться пробую из js по ws://front.site:9005/ с ошибкой

Куда должен проксировать nginx когда запрос приходит на 9005 порт?
Пробовал делать что то вроде "сервер слушает 9005 порт и делает proxy_pass на php-fpm:9005" но из этого ничего не вышло

Аватара пользователя
yiijeka
Сообщения: 3091
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Docker, Nginx, PHP-FPM, websoket morozovsk

Сообщение yiijeka »

Зачем nginx слушает 9005 ?

Ответить