Laravel ENV проблема с конфигурацией - PullRequest
1 голос
/ 09 июля 2020

Я использую php -fpm и nginx docker контейнер с общим томом (без привязки к хосту).

Для моего php -fpm у меня есть .env файл со спецификацией c VARS, и я также установил специфику c VARS во время выполнения docker run (не переопределяя файл).

Оба работают под несистемными / root пользователями, invoiceninja и nginx, соответственно, и имеют одинаковые uid и guid, хотя

Когда я пытаюсь посетить URL-адрес приложения, я получаю:

Появляется Чтобы быть проблемой с вашей конфигурацией, проверьте ваш файл .env. Если вы запустили 'php artisan config: cache', вам нужно будет запустить 'php artisan config: clear'

Если я выполню предложение:

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

Я получаю:

(1/1) RuntimeException Не указан ключ шифрования приложения в EncryptionServiceProvider-> key (array ('name' => 'Invoice Ninja', 'debug' => true, 'env' => 'local', 'url' => 'http://black-pearl.local: 8000', 'timezone' => 'UT C', 'locale' => 'en', 'fallback_locale' => 'ru', 'key' => '', 'cipher' => '', 'log' => 'syslog', 'provider' => array ('Illuminate \ Auth \ AuthServiceProvider', 'Collective \ Html \ HtmlServiceProvider ',' Illuminate \ Bus \ BusServiceProvider ',' Illuminate \ Cache \ CacheServiceProvider ',

php artisan tinker показывает, что ДЕЙСТВИТЕЛЬНО ЕСТЬ ключ, использующий env('APP_KEY'), а также config('app.key') и cat < .env также показывает ключ

В моей 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 "$@"

Я предполагаю здесь, что logi c ищет переменную, связанную с файлом, и объявляет ее в памяти.

Это проблема с разрешениями? Разрешения одинаковы для обоих контейнеров.

...