platformsh / symfonyflex-bridge
Platform.sh 上运行 Symfony Flex 的桥梁库
Requires
- php: >=7.2
- platformsh/config-reader: ^2.4.0
Requires (Dev)
- phpunit/phpunit: ^8.5
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)%'
更多详细信息请参见 此处