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
相关产品推荐
相关产品推荐

