platformsh/symfonyflex-bridge

此包已被废弃,不再维护。未建议替代包。

Platform.sh 上运行 Symfony Flex 的桥梁库

2.7.2 2022-10-14 12:34 UTC

This package is auto-updated.

Last update: 2023-03-15 14:25:27 UTC


README

归档库: Symfony Flex Bridge 已归档,不再是 Platform.sh 部署的推荐工具。用户应咨询来自 Symfony 的新官方 Platform.sh 模板 及其使用的 Symfony 配置脚本

Symfony Flex bridge for Platform.sh

这个简单的桥梁库将基于 Symfony Flex 的应用程序连接到 Platform.sh。在典型情况下,它应该是一次性的。

Symfony Flex 预期所有配置都通过具有特定名称和格式的环境变量传入。Platform.sh 以不同的特定格式提供配置信息作为环境变量。此库负责将 Platform.sh 变量映射到 Symfony Flex 预期用于常见值的格式。

用法

只需使用 Composer 需求此包。当包含 Composer 的自动加载时,此库将被激活并设置环境变量。只要在这发生之前 Symphony 启动其配置(它几乎肯定会这样做),一切都应该运行正常,无需进一步的用户交互。

composer require platformsh/symfonyflex-bridge

执行的映射

  • 如果定义了一个名为 database 的 Platform.sh 关系,它将被视为一个 SQL 数据库,并映射到 Symfony Flex 的 DATABASE_URL 环境变量。(注意:由于 Doctrine 中的一个错误,代码目前假定服务版本为 MariaDB 10.2。如果该 Doctrine 错误得到解决,可以删除此硬编码。)

  • 根据 PLATFORM_PROJECT_ENTROPY 变量设置 Symfony Flex 的 APP_SECRET,该变量正是为此目的提供的。

  • 根据 PLATFORM_SMTP_HOST 变量设置 MAILER_URL 变量。如果已安装 SwiftMailer,将使用该值。如果没有安装,此值将被安全忽略。

  • 如果没有设置 APP_ENV 值,它将默认为 prod

Elasticsearch

如果定义了一个名为 elasticsearch 的 Platform.sh 关系,它将被视为一个 Elasticsearch 索引,并将其映射到适当的环境变量。由于大多数用于 Symfony 的 Elasticsearch 包没有标准的环境变量命名约定,因此您需要修改您的 Symfony 配置以读取它们。

对于常见的 Elastica 库,您需要在您的 Symfony config/services.yaml 文件中添加以下内容

# config/services.yaml
parameters:
  es_host: '%env(ELASTICSEARCH_HOST)%'
  es_port: '%env(ELASTICSEARCH_PORT)%'

然后您可以在您的 Elastica 配置文件中引用这些参数

# config/packages/fos_elastica.yaml
fos_elastica:
    clients:
        default: { host: '%es_host%', port: '%es_port%' }

MongoDB

如果定义了一个名为 mongodatabase 的 Platform.sh 关联,它将被视为 Doctrine ODM 数据库并映射到相应的环境变量。请注意,如果默认未定义,您可能仍然需要在配置中引用这些环境变量。有关更多详细信息,请参阅 DoctrineMongoDBBundle 文档。

通常,将以下内容放置在您的 doctrine_mongodb.yaml 文件中应该足够了

# config/packages/doctrine_mongodb.yaml
doctrine_mongodb:
    connections:
        default:
            server: '%env(MONGODB_SERVER)%'
            options: { username: '%env(MONGODB_USERNAME)%', password: '%env(MONGODB_PASSWORD)%', authSource: '%env(MONGODB_DB)%' }
    default_database: '%env(MONGODB_DB)%'

RabbitMQ

如果定义了一个名为 rabbitmqqueue 的 Platform.sh 关联,它将被视为 RabbitMQ 消息后端并映射到相应的环境变量。

Solr

如果定义了一个名为 solr 的 Platform.sh 关联,它将被视为 Solr 索引并映射到相应的环境变量。

对于常见用途,您需要在您的 Symfony config/services.yaml 文件中添加以下内容

# config/services.yaml
parameters:
    solr_dsn: '%env(SOLR_DSN)%'
    solr_core: '%env(SOLR_CORE)%'

然后您可以在配置文件中引用这些参数

# config/packages/search_engine_solr.yaml
search_engine_solr:
    endpoints:
        endpoint0:
            dsn: '%solr_dsn%'
            core: '%solr_core%'
    connections:
        default:
            entry_endpoints:
                - endpoint0

Redis 缓存

如果定义了一个名为 rediscache 的 Platform.sh 关联,它将被视为缓存池的存储引擎。

对于典型用途,您需要定义一个类似下面的文件

# config/packages/framework.yaml
framework:
    cache:
        app: cache.adapter.redis
        system: cache.adapter.redis
        default_redis_provider: "%env(CACHE_URL)%"

更多详细信息请参见 此处

Redis 会话存储

如果定义了一个名为 redissession 的 Platform.sh 关联,它将被视为 symfony 会话的存储引擎。

对于典型用途,您需要添加一些类似下面的服务定义

# config/packages/framework.yaml
framework:
    session:
        handler_id: '%env(SESSION_REDIS_URL)%'

更多详细信息请参见 此处