ttree / flowplatformsh
简化 Platform.sh for Flow 框架的部署
README
Flow 框架实用包,用于解析 Platform.sh 变量
配置您的发行版以在 Platform.sh 上部署
composer require ttree/flowplatformsh
./flow platform:bootstrap --id fajq56c55mc5s --host eu.platform.sh --database MySQL|PostgreSQL
检查并修改配置以匹配您的项目
.platform/
.platform.app.yaml
.platform.env
在构建或部署钩子期间运行命令
您可以在构建或部署钩子期间运行任何 Flow CLI 命令。请注意,在构建钩子期间,您无法访问服务(数据库、缓存等)。这是默认配置。
Ttree:
FlowPlatformSh:
buildHooks:
commands:
'flow:package:rescan': true
deployHooks:
commands:
'flow:cache:flush': true
'flow:cache:warmup': true
'flow:doctrine:migrate': true
您可以将值设置为 false
来禁用命令。如果值是数组,则数组作为命令参数传递。
Ttree:
FlowPlatformSh:
deployHooks:
commands:
'ttree.neosplatformsh:platform:createadminaccount':
username: 'admin'
password: 'changeme'
'ttree.neosplatformsh:platform:importsitepackage':
package: 'Neos.Demo'
请确保您的 .platform.app.yaml
在相应的钩子中执行 php flow platform:build
和 php flow platform:build
。
您可以在构建钩子期间使用自定义的 FLOW_CONTEXT,以避免 Flow 尝试连接到 Redis 缓存时出现的问题,如下所示 .platform.app.yaml
。
variables:
env:
FLOW_CONTEXT: 'Production/PlatformSh'
FLOW_PATH_TEMPORARY_BASE: '/tmp'
FLOW_REWRITEURLS: 1
hooks:
build: |
set -e
export FLOW_CONTEXT=${FLOW_CONTEXT}Build
php flow platform:build
deploy: |
set -e
php flow platform:deploy
请查看 Ttree.NeosPlatformSh 中的命令控制器。
如何配置 .platform.env
此文件从 PLATFORM_RELATIONSHIPS
提取变量,并创建可在配置(Settings.yaml
、Caches.yaml
等)中使用的环境变量。每行包含变量名称和从 PLATFORM_RELATIONSHIPS
获取变量内容路径。
DATABASE_HOST = database.0.host
DATABASE_PORT = database.0.port
DATABASE_NAME = database.0.path
DATABASE_USER = database.0.username
DATABASE_PASSWORD = database.0.password
REDIS_HOST = redis.0.host
REDIS_PORT = redis.0.port
REDIS_ALTERNATIVE_HOST = redis.1.host
REDIS_ALTERNATIVE_PORT = redis.1.port
ELASTICSEARCH_HOST = elasticsearch.0.host
ELASTICSEARCH_PORT = elasticsearch.0.port
然后,您可以编辑您的 Settings.yaml
以使用新的环境变量。
Neos:
Flow:
persistence:
backendOptions:
driver: pdo_pgsql
dbname: '%env:DATABASE_NAME%'
port: '%env:DATABASE_PORT%'
user: '%env:DATABASE_USER%'
password: '%env:DATABASE_PASSWORD%'
host: '%env:DATABASE_HOST%'
将本地数据推送到 platform.sh
您可以使用以下命令将本地项目数据(资源和数据库)同步到平台。
./flow platform:push --directory Data/Persistent --publish --database --migrate --environment master
您可以使用 --configuration
参数提供您的本地 .platform.app.yaml
路径。
选项 --publish
在远程服务器上的 rsync 命令之后运行资源发布。
选项 --database
和 --migrate
在远程服务器上克隆本地数据库并运行迁移。
选项 --snapshot
在同步之前创建当前平台环境的快照。
选项 --environment
,默认为 master
,允许您针对特定的平台环境。
选项 --flush
在同步后刷新所有远程缓存。
选项 --dry-run
预览命令而不执行任何操作。
选项 --yes
非交互式模式。
警告:目前我们只推送文件和数据库,如果您使用 ElasticSearch,您需要手动重建索引。
您应该看到以下输出
Local -> platform.sh
+ Create Snapshot
+ Sync directory Data/Persistent
+ Publish resources
+ Clone database
+ Migrate database
从 platform.sh 拉取数据到您的本地设置
您可以使用以下命令将平台环境中的本地项目数据(资源和数据库)同步到本地。
./flow platform:pull --directory Data/Persistent --publish --database --migrate --environment master
您可以使用 --configuration
参数提供您的本地 .platform.app.yaml
路径。
选项 --publish
在远程服务器上的 rsync 命令之后运行资源发布。
选项 --database
和 --migrate
在本地服务器上克隆远程数据库并运行迁移。
选项 --environment
,默认为 master
,允许您针对特定的平台环境。
选项 --flush
在同步后刷新所有本地缓存。
选项 --dry-run
预览命令而不执行任何操作。
选项 --yes
非交互式模式。
警告:目前我们只拉取文件和数据库,如果您使用 ElasticSearch,您需要手动重建索引。
您应该看到以下输出
platform.sh -> Local
+ Sync directory Data/Persistent
+ Publish resources
+ Clone database
+ Migrate database
+ Flush all caches
我在本地使用 docker 运行数据库,推送到 platform.sh 的命令失败
您可以通过编辑您的 Settings.yaml
使用自定义的转储命令,例如 PostgreSQL
Ttree:
FlowPlatformSh:
commands:
push:
dump:
pgsql:
'*': 'docker exec -e "PGPASSWORD=@PASSWORD@" -t [docker-container-name] pg_dump -c -b -d @DBNAME@ -U @USER@ > Data/Temporary/PlatformShDump-@ENVIRONMENT@.sql'
pull:
restore:
pgsql:
'*': 'cat Data/Temporary/PlatformShDump-@ENVIRONMENT@.sql | docker exec -e "PGPASSWORD=@PASSWORD@" -i [docker-container-name] psql --host=@HOST@ -U@USER@ @DBNAME@'
将 [docker-container-name]
替换为 PostgreSQL 容器的名称或标识符。
鸣谢
由 ttree ltd - neos 解决方案提供商 赞助开发。
我们尽力用很多的爱来制作这个软件包,我们欢迎赞助和支持请求,只需联系我们即可。
许可证
MIT许可证(MIT)。有关更多信息,请参阅LICENSE。