netresearch/akeneo-bootstrap

此包的最新版本(1.6.18)没有可用的许可信息。

在运行前设置 Bootstrap Akeneo

1.6.18 2018-03-05 17:23 UTC

This package is auto-updated.

Last update: 2024-08-27 08:49:30 UTC


README

packagist docker pulls travis

这是

  1. Composer 包 netresearch/akeneo-bootstrap,用于引导 Akeneo 项目并从其他包中配置它们,而不是通过它们自己的配置文件(更好的可更新性)。
  2. 提供已构建好的 Akeneo PIM 项目的 Docker 镜像 netresearch/akeneo-app,使用 MongoDB 运行,并利用 akeneo-bootstrap 优化,以便最佳更新。

内容

Composer 包

安装 Akeneo 的常见方法是创建一个由 akeneo/pim-community-standard 生成的 composer 项目,这有主要缺点

  1. Akeneo 仍然 未将其核心包发布到 Packagist,因此需要将其作为 composer 仓库提供。由于相应的 github 仓库有成千上万的分支和标签,因此首先使用它进行 composer 非常慢,其次会使 composer 达到 github API 限制,这在任何你不希望暴露你的 github API 密钥的环境中都很难处理。此外,只要未在根 composer.json 中添加 github 仓库,其他包就没有办法要求 akeneo/pim-community-dev
  2. composer create-project 自然创建项目一次 - 如果你想要更新到原始项目的较新版本,就没有简单的方法使用 composer 来实现这一点。相反,你将不得不按照升级说明更新复制的源代码,这对我们来说至少不是我们想要的。
  3. 如果你需要更改 Akeneo 配置、路由或添加捆绑包,你必须接触由 composer create-project 生成的代码,这使得更新更加困难。

你也可以下载一个现成的 Akeneo 项目 - 但是更新问题仍然存在。

此包提供了一种绕过上述问题的机制

  1. 它提供了一个简单的 shell 脚本 akeneo-project,用于创建或升级 Akeneo 项目。
  2. 它提供了一个命令行应用程序 akeneo-bootstrap,该应用程序根据已安装包中的指令生成配置,并将 Akeneo 设置为运行。

它替换了 incenteev/parameter-handler,该程序注册为 composers post-install-cmd 和 post-update-cmd,因此当安装包时自动调用以生成 AppKernel、配置和路由(akeneo-bootstrap 命令的步骤 1-4)。

akeneo-project

使用 akeneo-project 脚本创建或升级 Akeneo 项目。它还将在项目中安装 netresearch/akeneo-bootstrap(这将自动调用 akeneo-bootstrap 命令的步骤 1-4)。

安装

脚本可以独立运行,但由于它仍然需要PHP和composer,您最好使用composer来安装它

composer global require netresearch/akeneo-bootstrap
akeneo-project -h

创建项目

akeneo-project create -v 1.7.6

升级/降级项目

akeneo-project upgrade -v 1.7.6

akeneo-bootstrap

命令akeneo-bootstrap包含在composer包netresearch/akeneo-bootstrap中,该包也由akeneo-project安装。它执行以下步骤

  1. 生成AppKernel(覆盖,而不是替换原始Akeneo AppKernel),包含由安装的任何包所需的组件
  2. 调用由安装的任何包所需的资源,生成(本地)配置和路由文件
  3. 从环境变量生成parameters.yml
  4. 修正PIM、ORO和Symfony的要求(调整路径)
  5. 如果需要,清除缓存
  6. 启动内核
  7. 等待数据库启动
  8. 确保Akeneo安装(检查要求,安装/升级数据库,导出资源)
  9. 设置导出/导入路径
  10. 如果需要,链接静态目录(Akeneo有时不使用配置的目录,而是使用固定路径,如app/logs - 此步骤将这些目录符号链接到配置的目录,如LOG_DIR
  11. 将需要从网络可写的目录的所有权更改为WEB_USER

环境变量

akeneo-bootstrap使用以下环境变量来配置Akeneo

由于该包主要针对Docker容器中的安装,因此选择了通过环境变量进行配置。如果您不使用此类,并且不想将上述变量添加到环境变量中,可以将它们放入一个.env文件中,然后像这样运行akeneo-bootstrap和composer命令

eval $(cat .env) composer update

从其他包中自定义 Akeneo

akeneo-bootstrap将扫描所有安装的包,寻找其composer.json中的设置,允许您注册Bundles、配置、路由和自定义引导步骤以自定义Akeneo

{
   "name": "acme/akeneo-config",
   "version": "1.0.0",
   "require": {
       "akeneo-labs/custom-entity-bundle": "1.10.*"
   },
   "extra": {
       "netresearch/akeneo-bootstrap": {
            "generate": [
                "Acme\\AkeneoConfig\\Bootstrap\\Generate"
            ],
            "boot": [
                "Acme\\AkeneoConfig\\Bootstrap\\Boot"
            ],
            "bundles": [
                { "class": "Pim\\Bundle\\CustomEntityBundle\\PimCustomEntityBundle" }
            ],
            "routing": {
                "pim_customentity": {
                    "resource": "@PimCustomEntityBundle/Resources/config/routing.yml",
                    "prefix": "/reference-data"
                }
            }
        }
    }
}

安装或更新此包akeneo-bootstrap后,将自动更新内核和本地配置以及路由文件,以添加配置的资源。

请注意,只有当包实际更新或安装时,对此composer.json文件所做的更改才会生效 - 如果您只更改了vendor包中的内容,则不会发生任何操作。

添加捆绑包

在您的composer.json中,将Bundles注册为数组中的对象,在extra.netresearch/akeneo-bootstrap.bundles中。其中每个都必须有包含包类的class属性,并可以有一个包含环境名称数组或逗号分隔字符串的env属性

{
   "name": "acme/akeneo-config",
   "version": "1.0.0",
   "extra": {
       "netresearch/akeneo-bootstrap": {
            "bundles": [
                {
                    "class": "Acme\\Bundle\\AllEnvsBundle"
                },
                {
                    "class": "Acme\\Bundle\\ProdOnlyBundle",
                    "env": "prod"
                },
                {
                    "class": "Acme\\Bundle\\DevAndTestOnlyBundle",
                    "env": ["dev", "test"]
                }
            ]
        }
    }
}

注意,将扫描所有包。这允许您在项目中只要求一个包,该包需要其他包含此类配置的包。

添加配置

将配置文件注册为数组中的对象,在您的composer.json中的extra.netresearch/akeneo-bootstrap.config。其中每个都必须有包含文件路径的resource属性,并可以有一个包含环境名称数组或逗号分隔字符串的env属性

{
   "name": "acme/akeneo-config",
   "version": "1.0.0",
   "extra": {
       "netresearch/akeneo-bootstrap": {
            "config": [
                {
                    "resource": "../../vendor/acme/akeneo-config/Resources/config/general.yml"
                },
                {
                    "resource": "../../vendor/acme/akeneo-config/Resources/config/prod.yml",
                    "env": "prod"
                },
                {
                    "resource": "../../vendor/acme/akeneo-config/Resources/config/dev.yml",
                    "env": ["dev", "test"]
                }
            ]
        }
    }
}

添加路由

将路由文件注册为对象中的对象,在您的composer.json中的extra.netresearch/akeneo-bootstrap.routing。其中每个都必须有包含文件路径的resource属性,并可以有一个包含环境名称数组或逗号分隔字符串的env属性。键是它们在routing_local.yml中注册的键

{
   "name": "acme/akeneo-config",
   "version": "1.0.0",
   "extra": {
       "netresearch/akeneo-bootstrap": {
            "routing": {
                "all_envs": {
                    "resource": "@AllEnvsBundle/Resources/config/routing.yml"
                },
                "prod": {
                    "resource": "../../vendor/acme/akeneo-config/Resources/config/routing_prod.yml",
                    "env": "prod"
                },
                "test": {
                    "resource": "../../vendor/acme/akeneo-config/Resources/config/routing_dev.yml",
                    "env": ["dev", "test"]
                }
            }
        }
    }
}

添加自定义引导

引导程序有两个作用域:生成(Akeneo/DB 不一定已初始化;在 composer update/install./bin/akeneo-bootstrap 之后调用)和 引导(Akeneo/DB 准备运行,仅在 generate 之后从 ./bin/akeneo-bootstrap 调用)。可以在 composer.json 中的 extra.netresearch/akeneo-bootstrap.{SCOPE} 中为每个作用域注册自定义引导类,以类名数组的形式。这些类都必须实现 \Netresearch\AkeneoBootstrap\Bootstrap\BootstrapInterface 接口。

{
   "name": "acme/akeneo-config",
   "version": "1.0.0",
   "extra": {
       "netresearch/akeneo-bootstrap": {
            "generate": [
                "Acme\\AkeneoConfig\\Bootstrap\\Generate"
            ],
            "boot": [
                "Acme\\AkeneoConfig\\Bootstrap\\Boot"
            ]
        }
    }
}

例如,引导程序可能如下所示

<?php
namespace Acme\AkeneoConfig\Bootstrap;

use \Netresearch\AkeneoBootstrap\Bootstrap\BootstrapAbstract;

class Generate extends BootstrapAbstract {
    public function getMessage() {
        return 'Forcing cache to be cleared'
            . ' (cache dir: ' . $this->getKernel()->getCacheDir() . ')';
    }

    public function run()
    {
        $this->isCacheClearRequired(true);
    }
}

请查看现有引导程序以获取更多示例。

Docker 镜像

Docker 镜像 netresearch/akeneo-app 是一个 Alpine 镜像,包含一个在 /var/www/html 中的 Akeneo 项目设置,以及 akeneo-project 脚本本身位于 /opt/akeneo-bootstrap/bin/akeneo-project

当与此镜像一起使用 netresearch/akeneo-php:apachenetresearch/akeneo-php,并将 akeneo-php-entrypoint 设置为入口点时,引导程序将在容器启动时自动调用。

运行

此镜像仅包含源文件。要使用它运行 Akeneo,需要 PHP、MySQL/MariaDB 数据库,以及可选的 Apache 和 MongoDB。

Akeneo 有多个 PHP 平台依赖项,因此我们建议使用我们的 Akeneo 专用 PHP Docker 镜像(有 PHP 仅有的和 PHP+Apache 版本)。

最好使用 docker-compose 运行它。有关示例,请参阅此处

为了 使用 Akeneo 开发,您还可以使用此 docker-compose.override.yml 以及以下 Dockerfile 等类似文件。

环境变量

akeneo-bootstrap 相同。

自定义 Akeneo

此镜像提供了一个已构建好的 Akeneo 项目(已执行 composer install),不打算通过修改其配置和内核进行定制 - 它更倾向于使用 netresearch/akeneo-bootstrap 来由其他包进行 定制

要安装自己的包,您应该使用自定义 Dockerfile 扩展此镜像 - 我们建议使用以下 多阶段构建文件 以保持结果镜像小巧。

FROM netresearch:akeneo-app as sources

FROM netresearch:akeneo-php as builder
COPY --from=sources /var/www/html /var/www/html
WORKDIR /var/www/html

# You can use private packages by adding them into 
# /src/packages/{vendor}/{packagename}
# THOSE PACKAGES NEED TO HAVE A version TO BE SET IN THEIR composer.json
# see above for further information
COPY ./packages/acme/akeneo-config /src/packages/acme/akeneo-config

RUN composer require acme/akeneo-config

FROM alpine
COPY --from=builder /src/packages /src/packages
COPY --from=builder /var/www/html /var/www/html

# If you will mount a local directory to /var/www/html
# which is what you'll likely do during development
# it is a good idea to also copy akeneo-project
# (see docker-compose.override.yml for how to invoke)
COPY --from=sources /usr/local/bin/akeneo-project /opt/akeneo-bootstrap/bin/akeneo-project

GitHub

如果您有任何问题、疑问、功能请求或只想给予星标,请访问GitHub 仓库