ttree/flowplatformsh

简化 Platform.sh for Flow 框架的部署

安装数: 1,881

依赖: 1

建议者: 0

安全性: 0

星级: 5

关注者: 3

分支: 3

开放问题: 0

类型:neos-package

1.1.4 2019-01-29 19:25 UTC

This package is auto-updated.

Last update: 2024-09-15 14:12:10 UTC


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:buildphp 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.yamlCaches.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