2016-03-09 254 views
2

我在Docker中使用環境變量時遇到問題。Docker無法識別環境變量

由於某些原因,Laravel無法看到我在Dockerfile中設置的環境變量。像APP_KEY,APP_ENV,等等。但是當我SSH到泊塢窗容器:

docker exec -it [container_name] bash 

,並運行以下命令:

php artisan tinker 
> print_r($_ENV) 

環境變量存在,並且設置爲正確的值。但是,當我嘗試在刀片模板中執行相同操作時,根本沒有看到APP_KEY,APP_ENV變量。我已經編輯了php.ini文件中的泊塢容器,使其顯示

variables_order = 'EGPCS' 

.env文件我可以通過環境變量到Laravel的唯一途徑?

我感謝你的幫助。

乾杯

回答

1

我解決它!其實我的一個朋友給了我線索。

原來是FPM配置會刪除Elastic Beanstalk設置的環境變量。

根據該文獻:http://php.net/manual/en/install.fpm.configuration.php

clear_env boolean 

在FPM工人清除環境。通過在添加此池配置中指定的env變量之前清除工作者中的環境,防止任意環境變量到達FPM工作進程。自PHP 5.4.27,5.5.11和5.6.0開始。默認值:是。

所以在你php-fpm.conf文件中查找該變量,並將其設置如下:

clear_env = no 

而且你是好去!然後,您的Laravel應用程序可以通過使用env()

來拉取Elastic Beanstalk中設置的環境變量。我希望能夠幫助某人。乾杯!