ttree/flowplatformsh 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ttree/flowplatformsh

Composer 安装命令:

composer require ttree/flowplatformsh

包简介

Platform.sh for Flow Framework made easy

README 文档

README

Flow framework utility package to parse Platform.sh variables

Configure your distribution to deploy on Platform.sh

composer require ttree/flowplatformsh
./flow platform:bootstrap --id fajq56c55mc5s --host eu.platform.sh --database MySQL|PostgreSQL

Check and modify the configuration to match your project:

  • .platform/
  • .platform.app.yaml
  • .platform.env

Run a command during Build or Deploy hook

You can run any Flow CLI commands during build or deploy hook. Remember that during Build hook you don't have access to services (database, cache, ...). This the default configuration:

Ttree:
  FlowPlatformSh:
    buildHooks:
      commands:
        'flow:package:rescan': true
    deployHooks:
      commands:
        'flow:cache:flush': true
        'flow:cache:warmup': true
        'flow:doctrine:migrate': true

You can set the value to false to disable a command. If the value is an array, the array is passed as command arguments:

Ttree:
  FlowPlatformSh:
   deployHooks:
     commands:
      'ttree.neosplatformsh:platform:createadminaccount':
        username: 'admin'
        password: 'changeme'
      'ttree.neosplatformsh:platform:importsitepackage':
        package: 'Neos.Demo'

Check that your .platform.app.yaml execute php flow platform:build and php flow platform:build in the respective hook.

You can use a custom FLOW_CONTEXT during the build hook to avoid issue when Flow try to connect to redis cache, like this .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

Check the command controller in Ttree.NeosPlatformSh.

How to configure .platform.env

This file extract variables from PLATFORM_RELATIONSHIPS and create env variables that you can use in your configuration (Settings.yaml, Caches.yaml, ...). Every line contains the variable name and the path to get the variable content from 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

Then you can edit your Settings.yaml to use the new env variables:

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%'

Push local data to platform.sh

You can sync a local project data (resources and databases) to platform with the following command:

./flow platform:push --directory Data/Persistent --publish --database --migrate --environment master

You can provide the path to your local .platform.app.yaml with the paramater --configuration.

The options --publish run the resources publishing after the rsync command on the remote server.

The options --database and --migrate clone the local database and run migration on the remote server.

The options --snapshot create a snapshot of the current platform environement before the synchronzation.

The options --environment, default master, allow to target specific platform environment.

The options --flush flush all remote caches after the synchronization.

The options --dry-run preview the commands and execute nothing.

The options --yes non interactive mode.

Warning: Currently we push only files and databases, if you use ElasticSearch you need to rebuild the index manually.

You should see this output:

Local -> platform.sh

    + Create Snapshot
    + Sync directory Data/Persistent
    + Publish resources
    + Clone database
    + Migrate database

Pull data from platform.sh to your local setup

You can sync a local project data (resources and databases) from a platform environment with the following command:

./flow platform:pull --directory Data/Persistent --publish --database --migrate --environment master

You can provide the path to your local .platform.app.yaml with the paramater --configuration.

The options --publish run the resources publishing after the rsync command on the remote server.

The options --database and --migrate clone the remote database and run migration on the local server.

The options --environment, default master, allow to target specific platform environment.

The options --flush flush all local caches after the synchronization.

The options --dry-run preview the commands and execute nothing.

The options --yes non interactive mode.

Warning: Currently we pull only files and databases, if you use ElasticSearch you need to rebuild the index manually.

You should see this output:

platform.sh -> Local

    + Sync directory Data/Persistent
    + Publish resources
    + Clone database
    + Migrate database
    + Flush all caches

I use docker locally to host my database, the push command failed

You can use a custom dump command, by editing your Settings.yaml, by example for 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@'

Replace [docker-container-name] by the name or the identifier of the PostgreSQL container.

Acknowledgments

Development sponsored by ttree ltd - neos solution provider.

We try our best to craft this package with a lots of love, we are open to sponsoring, support request, ... just contact us.

License

The MIT License (MIT). Please see LICENSE for more information.

ttree/flowplatformsh 适用场景与选型建议

ttree/flowplatformsh 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.88k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2017 年 06 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ttree/flowplatformsh 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ttree/flowplatformsh 我们能提供哪些服务?
定制开发 / 二次开发

基于 ttree/flowplatformsh 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.88k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 2
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-06-27