You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6 Docker环境修改不生效及SSH文件创建问题求助

解决Shopware Docker容器操作后本地项目无变更的问题

我来帮你排查这个Shopware Docker环境下的同步问题,这种情况大概率是文件挂载、权限或者容器路径匹配的问题,咱们一步步来定位解决:

1. 确认你连接的容器是否正确挂载了本地项目目录

首先得确保你操作的容器和本地项目目录是绑定同步的,不然容器里的操作完全和本地隔离:

  • 退出当前SSH连接,回到本地终端,运行 docker ps 查看正在运行的Shopware相关容器,找到对应的主容器(名称通常带shopware或storefront)。
  • 接着运行 docker inspect <容器ID/容器名称>,在输出里找到Mounts字段,检查是否存在本地项目目录到容器内/var/www/html(Shopware默认项目根目录)的挂载配置。
    • 如果没有找到这个挂载项,说明容器和本地项目完全独立,你需要调整Docker配置,把本地项目目录绑定挂载到容器内。
    • 如果有挂载,核对挂载的本地路径是不是你实际的项目文件夹,别不小心挂载了别的目录。

2. 检查文件权限与用户ID匹配问题

容器内的用户和本地用户的UID/GID不匹配,经常会导致文件同步失败或者本地看不到容器内创建的文件:

  • 在容器内运行 id,查看当前用户的UID和GID;回到本地终端也运行 id,对比两者的数值。
  • 如果数值不一致,你可以临时给本地项目目录设置宽松权限测试:chmod -R 777 <本地项目根目录>,然后再在容器内创建文件试试是否同步。后续再设置更安全的权限(比如把本地用户UID/GID和容器内统一)。

3. 确认storefront:build的输出路径是否在挂载目录内

有时候编译命令的输出路径不在同步挂载的目录里,自然本地看不到变更:

  • 运行 ./psh.phar storefront:build 时,仔细看命令的输出日志,找到编译后文件的生成路径(比如Shopware默认会生成到public/theme或var/cache)。
  • 在容器内进入这个路径,看看是否有新生成的文件;然后检查本地对应的目录是否同步了这些文件。如果输出路径不在挂载的同步目录里,你需要调整编译配置,或者修改挂载范围。

4. 重启容器与同步服务

有时候挂载会因为容器启动异常失效,重启一下往往能解决:

  • 在本地终端运行 ./psh.phar docker:stop 停止所有容器,稍等几秒后再运行 ./psh.phar docker:start 重启。
  • 如果你的Shopware Docker配置用了Mutagen这类文件同步工具,运行 mutagen list 查看同步状态,要是有错误就重启Mutagen服务。

5. 测试基础挂载有效性

做个最简单的测试验证挂载是否正常:

  • 在容器内运行 touch /var/www/html/test_sync_check.txt,然后回到本地项目根目录,看看是否出现这个文件。
  • 如果还是没有,那肯定是挂载配置出问题了,打开项目里的docker-compose.yml文件,找到volumes部分,确保配置类似这样:
    volumes:
      - ./:/var/www/html
    
    这里的./代表本地项目根目录,映射到容器内的/var/www/html,修改后重启容器即可。

内容的提问来源于stack exchange,提问作者Jonas Frese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:47:32