使用LaraDock配置laravel-echo-sever遇到的坑

前情提要:项目需要使用 webSocket 进行通信,并且使用的是 LaraDock 作为环境。所以使用 laravel-echo-server、laravel-horizon、php-worker 容器进行环境的部署。因为对 Docker 并不懂,仅仅只是使用 LaraDock,所以过程中遇到了很多问题,特此记录下来。

坑二 参考资料

LaraDock 的 Nginx 使用多站点配置的时候,laravel-echo-server 无法链接到 web 进行认证。

通过在 nginx 容器配置中添加别名 laradock/docker-compose.yml

### NGINX Server #########################################
    nginx:
      build:
        context: ./nginx
        args:
          - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
          - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
      volumes:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
        - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
        - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
      ports:
        - "${NGINX_HOST_HTTP_PORT}:80"
        - "${NGINX_HOST_HTTPS_PORT}:443"
      depends_on:
        - php-fpm
      networks:
        # before ----
        # - frontend
        # - backend
        # end before ----
        frontend:
        backend:
            aliases:
              - my-site.com    ##别名地址,在laravel-echo-server.json 中填写该地址就可以了

更改完配置之后需要重新构建 nginx 和 laravel-echo-server 容器。
并重新开启。

坑二

larave-echo-server 的 ssl 证书

  1. 直接配置 ssl 证书。(不明白证书需要发在目录的什么位置,所以 google 了很多内容之后选择了下面的方法。以后如果有机会补充第一点)
  2. 配置 nginx 反向代理。 laravel-echo-server
#以下内容需要在你的 nginx 站点配置文件的 server{} 块之内
location /socket.io {
        proxy_pass http://laravel-echo-server:6001; #填写非 https 的地址进行反向代理,如果 Echo 和 Nginx 在同一个服务器可以填写 localhost
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
  1. 配置 laravel-echo-server 配置文件 laravel-echo-server.json 为如下内容
{
        "authHost": "https://laravel-echo-server", //注意:改地址指向 web 站点,即 echo-server 想web端认证的地址
        "authEndpoint": "/broadcasting/auth",
        "clients": [],
        "database": "redis",
        "databaseConfig": {
                "redis": {
                        "port": "6379",
                        "host": "redis"
                }
        },
        "devMode": true,
        "host": null,
        "port": "6001",
        "protocol": "http",
        "socketio": {},
        "sslCertPath": "",
        "sslKeyPath": ""
}

操作技巧

  1. 不使用 -d 参数可以更好的进行调试
    docker-compose up laravel-echo-server
    
  2. 使用 logs 参数可以查看详情的日志输出
    docker-compose logs laravel-echo-server
    

文章作者: chenggx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chenggx !
评论
 上一篇
我的三十岁 我的三十岁
没有想到时间过的这么快,就这么来到了三十岁的生日,总觉得需要记录点什么。 没有想三十岁来的这么快,自己还没有完全做好准备。
2019-09-27
下一篇 
Laravel学习笔记 Laravel学习笔记
第一步:了解几个常用名称 代码基于 Laravel-5.8 部分内容给其他版本不一致,但整体逻辑是没有太大差别的。 Service Container、Service Provider、Facades、Contracts。当第一次使用
2019-06-18
  目录