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

Shopware 6 CI构建Docker镜像:无数据库下构建管理端的方案咨询

Shopware CI无数据库构建时生成var/plugins.json的替代方案

我们在CI流水线预构建Shopware Docker镜像时,构建环境没有数据库可用。执行以下构建命令:

CI=1 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true DATABASE_URL= bin/build-administration.sh

控制台会出现预期内的数据库连接警告:

#20 0.512 + /var/www/bin/ci bundle:dump
#20 2.309 Warning: Failed to load apps. Loading apps from local. Message: An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for _placeholder.test failed: Name or service not known
#20 2.312 

把var/plugins.json加入Git仓库不是唯一解决方案,以下是几种更智能的生成方式:

  • 用Shopware CLI离线生成文件
    在有数据库的开发环境或临时构建节点上,执行Shopware内置的CLI命令生成plugins.json,再把文件同步到CI构建环境:

    bin/console plugin:dump
    

    这个命令会扫描文件系统里所有已安装的插件,自动生成符合格式的var/plugins.json,完全不依赖CI环境的数据库。你可以在CI流水线的前置步骤里,用临时容器跑这个命令,把生成的文件挂载到构建环境中使用。

  • CI内写脚本手动扫描插件
    自己写个简单脚本,直接扫描custom/plugins目录下的插件,读取每个插件的plugin.xml或composer.json,提取必要信息后生成plugins.json。核心逻辑大概是:

    1. 遍历custom/plugins下的所有子目录
    2. 对每个包含plugin.xml的目录,解析XML拿到插件ID、名称、版本等字段
    3. 按照Shopware要求的JSON结构,把这些信息整理成数组写入var/plugins.json
      这种方式完全脱离数据库,只靠文件系统就能生成所需文件,适配无数据库的CI场景。
  • 尝试Shopware离线构建环境变量
    部分Shopware版本支持通过环境变量跳过数据库依赖的插件加载逻辑,强制构建脚本从文件系统扫描插件。可以修改构建命令试试:

    CI=1 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true DATABASE_URL= SHOPWARE_SKIP_DATABASE_PLUGIN_LOAD=1 bin/build-administration.sh
    

    注意:不同Shopware版本对这个变量的支持情况可能不同,需要对照对应版本的文档确认。如果支持,这个变量会让构建脚本自动生成临时的plugins.json完成构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:42:53