Laravel 8 没有读取 docker-compose 传递的环境值

Laravel 8 is not reading the env values passed by docker-compose

希望你一切都好,

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

它已针对开发和生产进行了 docker 化,不幸的是,在更新后,应用程序不会检索由 docker-compose 文件传递​​的 env 值,并且仅在我传递.env 文件到容器。

这是在容器内我仍然可以做的事情: php artisan tinker >> print_r(env("DB_HOST")) && print_r($_ENV) 即使不传递文件本身也能看到 env 值

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

有没有其他人遇到过 laravel 8 的这个问题?

提前谢谢你,

这可能是缓存问题。还请确保通过 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

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