在控制台中设置 Elastic Beanstalk 环境变量与从部署中传递它们
Posted
技术标签:
【中文标题】在控制台中设置 Elastic Beanstalk 环境变量与从部署中传递它们【英文标题】:Setting Elastic Beanstalk environment variables in the console vs passing them from deployment 【发布时间】:2021-04-26 16:03:28 【问题描述】:对于我的本地开发环境,我使用 .env 文件,然后在我的 Node.JS express 应用程序中引用各种变量,例如数据库连接,例如process.env.DB_HOST
.
但是,当我部署我的 EB 应用程序时,我想检查是否存在仅在 EB 控制台的环境变量中定义的环境变量。在 EB 控制台中定义它之后,我的节点应用程序仍然无法读取它 - 如果我 console.log(process.env.MY_EB_CONSOLE_VARIABLE)
它是未定义的。
怎么会?怎么回事?
如果对我有一个 dockerized node.js 应用程序有帮助,我会通过 EB CLI 部署到 EB。
谢谢
【问题讨论】:
【参考方案1】:好的,所以当您在弹性 beanstalk 控制台上设置环境变量时,它将创建一个 .env 文件。在您的 docker-compose.yml 中,您需要引用这个 .env 文件。
见 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html#docker-env-cfg.env-variables
我希望将变量简单地传递到我的节点进程中,这是不正确的
在我的 docker-compose.yml 中,我已经有了 settings.env,所以我只是像这样添加了 .env 文件:
# docker-compose.yml
version: "3.7"
services:
myApp:
build:
context: .
env_file:
- settings.env
- .env
ports:
- '80:3000'
【讨论】:
以上是关于在控制台中设置 Elastic Beanstalk 环境变量与从部署中传递它们的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk - 在环境属性中设置 .env Laravel
如何使用外部 RDS 数据库在 AWS Elastic Beanstalk 中设置 Laravel 应用程序
运行 cron 作业 (Node.js) 时如何在 Amazon Elastic Beanstalk 中设置环境变量?
Django AWS RDS 环境变量未在 Elastic Beanstalk 中设置
运行 AWS Deep Learning Base AMI (Amazon Linux 2) 时,如何在 Elastic Beanstalk 中设置 WSGI?