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" ] (...)