Dockware Shopware 6 Storefront无法自动重载问题求助
Dockware容器中Storefront自动重载失败,WebSocket连接
ws://localhost:9999/ws失败 问题详情
在dockware容器内执行make watch-storefront命令后:
- 可通过
localhost:9998访问Storefront,手动刷新能正常看到修改内容 - Storefront无法自动重载,浏览器控制台报错:
WebSocket connection to 'ws://localhost:9999/ws' failed
环境信息
- 设备:Apple Macbook Pro(M1 Pro芯片)
- 浏览器:Google Chrome v127.0.6533.120
- Dockware配置:
services: shopware: image: dockware/dev:6.6.1.0 container_name: shopware ports: - "22:22" # ssh - "82:80" # apache2 - "444:443" # apache2 https - "8888:8888" # watch admin - "9998:9998" # watch storefront proxy - "9999:9999" # watch storefront - "3307:3306" # mysql port networks: - web volumes: - "./src/vendor:/var/www/html/vendor" environment: - XDEBUG_ENABLED=1 networks: web: external: false
可能的解决方案
1. 检查容器内WebSocket服务状态
- 进入容器:
docker exec -it shopware bash - 查看9999端口监听情况:
netstat -tulpn | grep 9999,确认watch-storefront对应的进程在正常运行 - 查看
make watch-storefront的输出日志,排查是否有WebSocket服务启动失败的报错信息
2. 修正Storefront的Webpack Dev Server配置
- 容器内找到Storefront的Webpack配置文件(通常路径为
/var/www/html/vendor/shopware/storefront/Resources/app/storefront/webpack.config.js,或自定义主题的webpack配置文件) - 检查
devServer配置项:- 将
host设置为0.0.0.0(允许外部容器访问),而非默认的localhost - 确认
public配置指向http://localhost:9999,与端口映射保持一致
- 将
3. 排查端口与网络问题
- 检查宿主机9999端口是否被占用:
lsof -i :9999(MacOS命令),若被占用则停止对应进程或修改dockware端口映射 - 直接访问
http://localhost:9999,确认Webpack Dev Server是否正常响应 - 关闭VPN或代理工具,M1芯片Mac的Docker网络可能受此类工具影响
4. 清除缓存并重启服务
- 容器内执行
bin/console cache:clear清除Shopware缓存 - 停止当前
make watch-storefront进程,重新启动 - 清除浏览器缓存或使用无痕模式测试
内容的提问来源于stack exchange,提问作者Donny van Grondelle
相关产品推荐
相关产品推荐

