Laravel 8 不读取 docker-compose 传递的 env 值

Meh*_*ein 3 php environment-variables laravel docker docker-compose

一切顺利,

我有一个项目,最近从 laravel 6 升级到 laravel 8。

它对于开发和生产都进行了 dockerized,不幸的是,更新后,应用程序不会检索 docker-compose 文件传递​​的 env 值,并且仅当我将 .env 文件传递​​到容器时才有效。

此时,在容器内我仍然可以执行以下操作: php artisan tinker>> print_r(env("DB_HOST"))&&print_r($_ENV)并查看 env 值,即使不传递文件本身

因此 compose 文件将 env 值传递给容器,但 laravel 应用程序不会获取它们

还有其他人在 Laravel 8 中遇到过这个问题吗?

先感谢您,

kol*_*nte 5

这可能是一个缓存问题。还请确保通过config()调用访问所有环境变量,而不是env()直接访问 - 如果您正在缓存配置,这将无法解决。

这是我用于生产 Laravel 图像的入口点脚本:

#!/bin/sh

artisan="/usr/local/bin/php /var/www/artisan"
$artisan down
$artisan cache:clear

$artisan config:clear
$artisan config:cache

$artisan event:clear
$artisan event:cache

$artisan route:clear

$artisan view:clear

$artisan up

apache2-foreground
Run Code Online (Sandbox Code Playgroud)

这将清除所有缓存并在启动容器时再次缓存它们,以确保重新启动后所有值都是最新的。