- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这是我目前的情况。
我希望在各自的 git 分支中处理每个环境。
我的困难
如果我必须部署到开发环境,那会变得非常简单
// make config changes in master branch
// git add, commit
// eb deploy
// thus development environment is updated
但如果我必须部署到生产环境中,问题就从这里开始
git checkout production
git merge master // pulls config that is meant for development environment only
eb deploy
我希望当我 merge 来自 master 分支的更改时,我的所有代码都更新为最新的更改。但是 .ebextensions 和 .elasticbeanstalk 目录保持不变
如何告诉 git 在 merge 到生产分支时忽略整个 .ebextensions 文件夹?
最佳答案
对于这个版本,它相对简单。例如:
mkdir HelloWorld # create new directory for project
cd HelloWorld # enter the new directory
git init # create git repository
eb init -p PHP # create new application
echo "<?php echo getenv("ENV_NAME"); ?>" > index.php
git add .gitignore index.php
git commit -m 'Initial commit.'
eb create dev-env # create environment named dev-env
eb create prod-env # create environment named prod-env
eb use dev-env # associate dev-env to current branch (master)
eb setenv ENV_NAME=DEV # set env variable specific to dev-env
git checkout -b production # create production branch and switch to it
eb use prod-env # associate prod-env to the current branch (production)
eb setenv ENV_NAME=PROD # set env variable specific to prod-env
这不会保存 ENV_NAME
本地文件系统中的任何位置。 EB CLI 直接更改实时 EB 实例。您可以使用 eb config save
(按照 Nick Humrich 的建议)将当前运行环境的环境配置设置保存到 .elasticbeanstalk/saved_configs/<env-name>.cfg.yml
.由于每个环境都有自己的文件,因此您不应该有任何冲突,除非您在两个分支中更改其中一个。另一种选择(请参阅保护敏感信息)是将它们添加到 .gitignore
.
一种方法是为每个环境(分支)设置不同的选项设置文件。 EB CLI可以帮助你:-)
运行 eb init
从每个分支(见下文)并为每个分支选择不同的环境名称,因此您最终会得到 2 个不同的 .elasticbeanstalk/optionsettings.<env-name>
。文件。这样您就可以避免 .elasticbeanstalk/
上的冲突.
mkdir MyApp
cd MyApp
git init .
eb init
注意:当它要求您提供环境名称时,请选择一个能够标识它是开发环境还是生产环境的名称。
Enter your AWS Access Key ID (current value is "<redacted>"):
Enter your AWS Secret Access Key (current value is "<redacted>"):
Select an AWS Elastic Beanstalk service region.
Available service regions are:
<redacted>
Select (1 to 8): 1
Enter an AWS Elastic Beanstalk application name
(auto-generated value is "MyApp"): MyApp
Enter an AWS Elastic Beanstalk environment name
(auto-generated value is "MyApp-env"): MyApp-dev
Select an environment tier.
Available environment tiers are:
1) WebServer::Standard::1.0
2) Worker::SQS/HTTP::1.0
Select (1 to 2): 1
Select a solution stack.
Available solution stacks are:
<redacted>
Select (1 to 59): 32
Select an environment type.
Available environment types are:
1) LoadBalanced
2) SingleInstance
Select (1 to 2): 2
Create an RDS DB Instance? [y/n]: n
Attach an instance profile (current value is "[Create a default instance profile]"):
<redacted>
Select (1 to 5): 4
git checkout -b production
eb init
重复第 3 步,但选择不同的环境名称。这将创建不同的 .elasticbeanstalk/optionsettings.<env-name>
文件。
您应该使用相同的 app.config
对于这两种环境。环境之间唯一可能不同的是 option_settings
部分。但据我所知,你不能有不同的 option_settings
每个环境,那么我们该怎么做呢?
好吧,我还没有最佳解决方案,但我会告诉您我是如何做到的。我添加所有 option_name
我需要并使用占位符值,例如:
option_settings:
- option_name: MY_CONFIG
value: CHANGEME
然后我通过 AWS Elastic Beanstalk 管理面板手动更改它们的值。转到 Application > Configuration > Software Configuration > Environment Properties
.
另一种可能性是拥有一个由您的 container_commands
运行的自定义脚本.此脚本可以通过其主机名(或其他唯一值)识别 EC2 实例并自动加载环境变量(例如 source <hostname>.env
)。
您需要遵守的唯一规则是:除非您不在意,否则您的存储库不得包含凭据等敏感信息。
例如,应用程序希望通过环境变量读取 RDS 凭据,因此您将它们放在 option_settings
中.但是您不希望其他贡献者看到它们,对吗?我建议使用占位符的解决方案在这方面很方便。
关于git - aws elastic beanstalk 环境的特定 git 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28986270/
我正在尝试将我的应用程序上载到Elastic Beanstalk,但是在节点预gyp安装--fallback-to-build上,npm安装失败。我尝试了各种版本的节点,但无济于事。似乎正在尝试获取一
设置 Elastic Beanstalk 的配置时,我没有获得解决方案堆栈的任何选项。 以下是有问题的行: `Select a solution stack. Available solution s
我正在尝试自定义 beanstalk 的默认 AMI,但每次我都会在一段随机时间后服务器重新启动。我什至没有改变任何东西,但没有任何效果。 我尝试过以下方法: 找到运行beanstalk的实例,创建A
我正在尝试使用sudo pip install awsebcli在新的Ubuntu 14.04(在Windows的Linux子系统上)上安装Elastic Beanstalk CLI(awsebcli
Amazon Beanstalk 是否会自动防止(分布式)拒绝服务攻击?如果没有,最方便的方法是什么? 最佳答案 我相信它会 New – AWS Shield AWS Shield is a new
每当我在 Elastic Beanstalk 中创建新环境时,我都会手动配置自定义 AMI ID、SNS 通知等,但我想自动完成,即,将设置(自定义 AMI ID、SNS、 key 对等)保存到一个配
我已使用以下方法连接到 Elastic Beanstalk: eb ssh XXXXXX --profile=xx 现在我想将一个文件复制到我的本地机器上,我该怎么做? 最佳答案 找出与 scp 一起
对于典型的 Java Web 应用程序,使用 Elastic Beanstalk 相对于手动创建 EC2 实例、设置 tomcat 服务器和部署等有哪些优势?负载平衡、监控和自动缩放是唯一的优势吗?
我有一个运行 PHP 的弹性 beanstalk 环境。在我的项目中,我有一个 .ebextensions 文件夹和一个名为“15-memorymonitor.config”的文件,其中包含以下内容;
我有 “更新”:Dockerrun.aws.json 中的“真” 当我更新 ECR 中的图像时,它应该自动更新 EC2 iontance 中的图像和容器。 但是当我在推送新图像后通过 ssh 进入实例
我有一个定义 Elastic Beanstalk 应用程序的 CloudFormation 模板。 我想扩展这个应用程序,即我希望端口 80 上的监听器重定向到 HTTPS。 AWS::Elastic
我在使用自定义 .ebextensions 文件部署 EB 实例时遇到问题。这是该文件中的相关部分: container_commands: 01_migrate: command: 'p
我已经使用带负载均衡器的 Elastic Beanstalk 创建了一个环境,并在各自的配置中分配了所有健康检查值 我也为ELB设置了应用健康检查url 但是当我检查自动缩放组配置时,健康检查类型是
我正在尝试部署我的 角申请通过GitHub Actions到 Elastic Beanstalk 。我正在使用这个 GitHub actions用于部署到 ELB。 我的问题是,部署失败,因为 ELB
我已阅读有关 Deploying Versions with Zero Downtime 的 AWS 文档,又名 CNAME 交换。 如 yegor256在 this answer 中有解释: The
我有一个弹性 beanstalk 设置,但无法访问环境中列出的 url,而如果我指向负载均衡器的 url,我可以访问它。 有什么建议吗? 最佳答案 将 LoadBalancer 安全组附加到实例。对我
我正在使用 AWS Elastic beanstalk 并希望为不同的环境配置不同的 ENV 变量。我发现的唯一方法是使用 ebextensions,但如果我将同一个数据包部署到多个环境,则无法覆盖在
我有一个应用程序,其中包含 nodejs 和 php 代码。 nodejs 用于运行应用程序所需的几个脚本。我如何使用 aws Elastic beanstalk 部署此类应用程序? 最佳答案 有两种
我今天遇到一个关于 Amazon Elastick BeanStalk 的奇怪问题:对于我的实例,我无法上传应用程序: XXX@-Vostro-2520:~/git_projects/ProjectB
我不断收到以下消息。但是在我的 nginx 日志中没有任何内容表明返回的请求状态为 5xx。此外,应用程序似乎按预期工作。我可能会得到这些的任何指示? 留言: Environment health h
我是一名优秀的程序员,十分优秀!