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:
Код: Выделить всё
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',
],
NGINX слушает 80 и 9005, а также проксирует запросы на php-fpm на 9000 порт
Вебсокет morozovsk запущен в nohup в контейнере pfp-fpm, в настройках 9005 порт
Подключиться пробую из js по ws://front.site:9005/ с ошибкой
Куда должен проксировать nginx когда запрос приходит на 9005 порт?
Пробовал делать что то вроде "сервер слушает 9005 порт и делает proxy_pass на php-fpm:9005" но из этого ничего не вышло