leroy-merlin-br / dployer
一个简单的脚本,用于将PHP应用程序部署到AWS ElasticBeanstalk
v1.4.1
2018-01-19 19:24 UTC
Requires
- php: >=7.0
- aws/aws-sdk-php: ~2.8
- icecave/isolator: ~2.3
- illuminate/container: ~4.2
- symfony/console: ~2.8
Requires (Dev)
- phpunit/phpunit: ~5
README
一个简单的脚本,可以在几分钟内将PHP应用程序部署到ElasticBeanstalk。
安装
Composer
composer global require "leroy-merlin-br/dployer=*@dev"
dployer的全局配置
AWS配置
您有2种方式来配置AWS
- 环境变量
- JSON配置文件
环境变量
您必须填写以下环境变量。
DPLOYER_PROFILE
: 您在AWS中的配置文件名。DPLOYER_REGION
: 您想要部署的区域。DPLOYER_AWS_KEY
: 您的AWS密钥。DPLOYER_AWS_SECRET
: 您的AWS密钥。
JSON配置文件
- 创建以下配置文件:
~/.aws/config.json
{ "includes": ["_aws"], "services": { "default_settings": { "params": { "profile": "my_profile", "region": "sa-east-1", "key": "YOURSUPERKEY", "secret": "YoUrSuPeRsEcReT" } } } }
AWS存储桶
在~/.bashrc
文件的末尾添加以下行
export DPLOYER_BUCKET=your-bucket-identifier-0-12345678
用法
在您想要部署的文件夹中,只需运行
dployer deploy ApplicationName elasticbeanstalked-environment
选项
您可以使用以下选项
- -c (--config): 使用不同的自定义配置文件而非 .dployer
- -i (--interactive): 在配置文件中运行每个命令之前询问
- -v (--verbose): 显示命令输出
- -f (--force): 即使脚本退出错误也继续部署过程
项目配置
为了优化您的项目部署,您可以创建一个配置文件来保存应用程序和环境变量。此外,您还可以获得一些额外的功能,例如:运行您想要运行的脚本的events,以及复制额外文件和删除一些文件在压缩之前的选项。
只需在项目根目录中创建一个.dployer
文件。
注意:一旦您有包含已定义应用程序和环境变量的.dployer
文件,您只需运行以下命令即可
dployer deploy
示例.dployer
{ "application": "ApplicationName", "environment": "my-environment", "scripts": { "init": "composer dumpautoload", "before-pack": [ "gulp build --production" ], "before-deploy": [ "echo 'Deploying new version'", "echo 'Another important command to run before deploy'" ], "finish": [ "gulp clean", "echo 'Nicely done'" ] }, "copy-paths": [ "vendor", "public/assets" ], "exclude-paths": [ ".git", "vendor/**/*.git" ] }
事件
dployer在部署流程中触发4个事件
- init: 在初始验证之后、部署任何命令之前运行
- before-pack: 在创建zip文件之前运行
- before-deploy: 在创建ElasticBeanstalk版本和上传zip之前运行
- finish: 在上传新版本后运行
copy-paths
dployer只是将您的当前git分支克隆到一个临时文件夹中,然后创建一个zip文件。但有时,您想部署一些被git忽略的文件(在.gitignore
文件中)。
在这种情况下,您可以将这些文件/文件夹放在配置文件中的copy-paths
键中,如示例部分所示。
.dployer
(...) "copy-paths": [ "vendor", "public/assets/" ] (...)
exclude-paths
在另一种情况下,有时您也想排除一些文件/文件夹。
.dployer
(...) "exclude-paths": [ ".git", "vendor/**/*.git" ] (...)