Docker中的Laravel没有识别环境variables

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

出于某种原因,Laravel无法看到我在Dockerfile中设置的环境variables。 像APP_KEY,APP_ENV等,但是当我SSH进入docker集装箱:

docker exec -it [container_name] bash 

并运行以下命令:

 php artisan tinker > print_r($_ENV) 

环境variables存在并被设置为适当的值。 但是,当我试图在刀片模板中做同样的事情时,我根本没有看到APP_KEY,APP_ENVvariables。 我已经编辑了Docker容器中的php.ini文件,以便它显示

 variables_order = 'EGPCS' 

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

我感谢你的帮助。

干杯

我解决了它! 其实我的一个朋友给了我线索。

原来是FPMconfiguration是删除由Elastic Beanstalk设置的环境variables。

基于这个文件: http : //php.net/manual/en/install.fpm.configuration.php

 clear_env boolean 

清晰的FPM工作环境。 通过在添加此池configuration中指定的envvariables之前清除工作器中的环境,防止任意环境variables到达FPM工作器进程。 自PHP 5.4.27,5.5.11和5.6.0。 默认值:是。

所以在你的php-fpm.conf文件中查找这个variables并将其设置如下:

 clear_env = no 

而且你很好走! 然后,您的Laravel应用程序可以通过使用env()来获取在Elastic Beanstalk中设置的环境variables

我希望能帮助别人。 干杯!

使用EB CLI而不是.env ,可以将环境variables传递到Elastic Beanstalk中的.env容器。

例如:

 $ eb setenv APP_KEY=xxx APP_ENV=xxx 

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