Laravel在Docker中无法识别环境变量

时间:2016-03-09 23:33:01

标签: docker laravel-5 environment-variables elastic-beanstalk

我在Docker中使用环境变量时遇到了问题。

由于某些原因,Laravel无法看到我在Dockerfile中设置的环境变量。像APP_KEY,APP_ENV等。但是当我SSH到docker容器时:

docker exec -it [container_name] bash

并运行以下内容:

php artisan tinker
> print_r($_ENV)

环境变量存在并设置为正确的值。但是,当我尝试在Blade模板中执行相同操作时,我根本看不到APP_KEY,APP_ENV变量。我已经编辑了Docker容器中的php.ini文件,以便显示

variables_order = 'EGPCS'

.env文件是我可以将环境变量传递给Laravel的唯一方法吗?

感谢您的帮助。

干杯

2 个答案:

答案 0 :(得分:1)

我解决了!实际上我的一个朋友给了我线索。

原来是FPM配置正在删除Elastic Beanstalk设置的环境变量。

基于此文档:http://php.net/manual/en/install.fpm.configuration.php

clear_env boolean

FPM工作人员的环境清晰。通过在添加此池配置中指定的env vars之前清除工作线程中的环境,防止任意环境变量到达FPM工作进程。从PHP 5.4.27,5.5.11和5.6.0开始。默认值:是。

因此,在php-fpm.conf文件中查找该变量并将其设置如下:

clear_env = no

你很高兴去!然后,您的Laravel应用程序可以使用env()

提取Elastic Beanstalk中设置的环境变量

我希望能有所帮助。干杯!

答案 1 :(得分:0)

使用EB CLI代替.env,您可以将环境变量传递到Elastic Beanstalk中的docker容器。

例如:

$ eb setenv APP_KEY=xxx APP_ENV=xxx

请阅读以下文件: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html