配置中的Laravel环境问题

配置中的Laravel环境问题,laravel,docker,nginx,dotenv,Laravel,Docker,Nginx,Dotenv,我正在使用共享卷(不绑定到主机)运行一个php fpm和一个nginx docker容器 对于我的php fpm,我有一个带有特定变量的.env文件,并且我还在docker run运行时设置了特定的变量(非替代文件) 它们分别在非系统/根用户下运行,invoiceninja和nginx,并且具有相同的uid和guid 当我尝试访问应用程序url时,我得到: 您的配置似乎有问题,请检查.env文件。 如果已运行“php artisan配置:缓存”,则需要运行“php artisan配置:清除” 如

我正在使用共享卷(不绑定到主机)运行一个php fpm和一个nginx docker容器

对于我的php fpm,我有一个带有特定变量的
.env
文件,并且我还在
docker run
运行时设置了特定的变量(非替代文件)

它们分别在非系统/根用户下运行,
invoiceninja
nginx
,并且具有相同的
uid
guid

当我尝试访问应用程序url时,我得到:

您的配置似乎有问题,请检查.env文件。 如果已运行“php artisan配置:缓存”,则需要运行“php artisan配置:清除”

如果我执行该建议:

'php artisan config:cache' you will need to run 'php artisan config:clear'
我得到:


(1/1)运行时异常在EncryptionServiceProvider->key(数组)处未指定任何应用程序加密密钥('name'=>'发票忍者','debug'=>true,'env'=>'本地','url'=>'http://black-pearl.local:8000“,”时区“=>”UTC“,”区域设置“=>”en“,”回退“=>”en“,”密钥“=>”,”密码“=>”,”日志“=>”系统日志“,”提供程序“=>数组('Illumb\Auth\AuthServiceProvider'、'Collective\Html\HtmlServiceProvider'、'Illumb\Bus\BusServiceProvider'、'Illumb\Cache\CacheServiceProvider'

php artisan tinker
揭示了实际上存在一个使用
env('APP_key')
的键,并且在
config('APP.key')
cat
中也揭示了该键

在docker入口点中,我看到以下内容:

# usage: file_env VAR [DEFAULT]
#    ie: file_env 'XYZ_DB_PASSWORD' 'example'
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
#  "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
file_env() {
    local var="$1"
    local fileVar="${var}_FILE"
    local def="${2:-}"

    if [ "$(ie_gv ${var})" != ""  ] && [ "$(ie_gv ${fileVar})" != "" ]; then
        in_error "Both $var and $fileVar are set (but are exclusive)"
    fi

    local val="$def"
    if [ "$(ie_gv ${var})" != "" ]; then
        val=$(ie_gv ${var})
    elif [ "$(ie_gv ${fileVar})" != "" ]; then
        val=`cat $(ie_gv ${fileVar})`
    fi

    export "$var"="$val"
    unset "$fileVar"
}

# Initialize values that might be stored in a file
file_env 'APP_KEY'
file_env 'API_SECRET'
file_env 'CLOUDFLARE_API_KEY'
file_env 'DB_USERNAME'
file_env 'DB_HOST'
file_env 'DB_DATABASE'
file_env 'MAIL_DRIVER'
file_env 'APP_CIPHER'
file_env 'REQUIRE_HTTPS'
file_env 'MAIL_HOST'
file_env 'MAIL_PORT'
file_env 'MAIL_USERNAME'
file_env 'MAILGUN_SECRET'
file_env 'S3_KEY'
file_env 'S3_SECRET'

# Run Laravel stuff
php artisan key:generate
php artisan config:cache
php artisan optimize

exec docker-php-entrypoint "$@"
这里我假设逻辑正在寻找一个与文件相关的变量,并在内存中声明它


这是权限问题吗?两个容器上的权限相同。

“未指定应用程序加密密钥”意味着您没有在.env文件中设置应用程序密钥。运行
php artisan key:generate
创建一个。@lewis4u问题就在于我确实有密钥存在“未指定应用程序加密密钥”意味着您没有在.env文件中设置应用程序密钥。请运行
php artisan key:generate
创建一个应用程序密钥。@lewis4u这是一个问题,事实上我有一个密钥