Php docker容器中未指定应用程序加密密钥

Php docker容器中未指定应用程序加密密钥,php,laravel,docker,containers,Php,Laravel,Docker,Containers,我想开始和docker合作。我已经开始使用nginx、laravel和mysql容器。但我有问题,当我想访问我的页面时,我得到: 未指定任何应用程序加密密钥 在cointainer中的env文件中,我有APP_KEY=base64:isqaS8uLDmiO47hZLTTKmheHM13uBkeA6wTWG1nF5E4=由命令php artisan KEY:generate生成,从中我成功地设置了应用程序密钥。 当我通过php artisan tinkervalueenv('APP_KEY')进行

我想开始和docker合作。我已经开始使用nginx、laravel和mysql容器。但我有问题,当我想访问我的页面时,我得到:

未指定任何应用程序加密密钥

在cointainer中的env文件中,我有
APP_KEY=base64:isqaS8uLDmiO47hZLTTKmheHM13uBkeA6wTWG1nF5E4=
由命令
php artisan KEY:generate
生成,从中我成功地设置了
应用程序密钥。

当我通过
php artisan tinker
value
env('APP_KEY')
进行检查时,我只得到
。更重要的是,我发现当在
.env
文件中没有
APP_KEY
部分时,该命令不起作用

env文件的权限如下所示:
-rwxr-xr-x 1 www data www data 829 Sep 17 12:22.env

日志文件中的错误

[2020-09-17 12:23:19]本地。错误:未指定应用程序加密密钥。{“exception”:“[object](RuntimeException(代码:0):未指定任何应用程序加密密钥。位于/var/www/vendor/laravel/framework/src/illights/EncryptionServiceProvider.php:44)[stacktrace]#0/var/www/vendor/laravel/framework/src/illights/Support/helpers.php(422):illumb\\Encryption\\EncryptionServiceProvider->illumb\\Encryption\{closure}(“”)1/var/www/vendor/laravel/framework/src/illumb/Encryption/EncryptionServiceProvider.php(48):点击(“”,对象(closure))#2/var/www/vendor/laravel/framework/src/illumb/ency/Encryption/EncryptionServiceProvider.php(24):illumb\\Encryption\\EncryptionServiceProvider->key(Array)#3/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(800):illumb\\Encryption\\EncryptionServiceProvider->illumb\\Encryption\{closure}(对象(illumb\\foundation\\Application),数组)#4/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(682):illumb\\Container\\Container->build(Object(Closure))#5/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(630):illumb\\Container\\Container->解析('encrypter',数组)#6/var/www/vendor/laravel/framework/src/illumb/Foundation/Application.php(768):illumb\\Container\\Container->make('encrypter',Array)#7/var/www/vendor/laravel/framework/src/illumb/Container/Container/Container.php(946):illumb\\Foundation\\Application->make('encrypter'))#8/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(874):illumb\\Container\\Container->resolveClass(对象(ReflectionParameter))#9/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(835):illumb\\Container\\Container->->resolveDependencies(数组)#10/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(682):illumb\\Container\\Container->build('App\\\\Http\\\\Middle…'))#11/var/www/vendor/laravel/framework/src/illumb/Container/Container.php(630):illumb\\Container\\Container->->resolve('App\\\Http\\\\\Middle…',,ar#12/var/www/vendor/laravel/framework/src/illumb/Foundation/Application.php(768):illumb\\Container\\Container->make('App\\\\Http\\\\Middle…',数组)#13/var/www/vendor/laravel/framework/src/illumb/Foundation/Http/Kernel.php(215):illumb\\Foundation\\Application->make('App\\\Http\\\Middle…)#14/var/www/vendor/laravel/framework/src/illumb/Foundation/Http/Kernel.php(189):illumb\\Foundation\\Http\\Kernel->terminateMiddleware(对象(illumb\\Http\\Request)、对象(Illumin ate\\Http\\Response))#15/var/www/public/index.php(60):illumb\\Foundation\\Http\\Kernel->->terminate(对象(illumb\\Http\\Request)、对象(照亮\\Http\\Response))#16{main}}

我尝试重新启动服务器,清除缓存,删除并添加新密钥,但这并没有帮助

编辑: 这是我的文件

FROM php:7.4.0-fpm

COPY composer.lock composer.json /var/www/

COPY database /var/www/database

WORKDIR /var/www

RUN apt-get update && apt-get -y install git && apt-get -y install zip

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

COPY . /var/www 

RUN chown -R www-data:www-data \
        /var/www/storage \
        /var/www/bootstrap/cache

RUN  apt-get install -y libmcrypt-dev \
        libmagickwand-dev --no-install-recommends \
        && pecl install mcrypt-1.0.3 \
        && docker-php-ext-install pdo_mysql \
        && docker-php-ext-enable mcrypt

RUN mv .env.prod .env

RUN composer install

RUN chown -R www-data:www-data /var/www

RUN chown -R $USER:www-data storage \
        && chown -R $USER:www-data bootstrap/cache\
        && chmod -R 775 storage \
        && chmod -R 775 bootstrap/cache

RUN php artisan key:generate
这是我的
docker compose.yml

version: '3.6'

services: 

    app:
        container_name: laravel_app
        build: 
            context: ./
            dockerfile: development/app.dockerfile
        volumes: 
            - ./storage:/var/www/storage
        env_file: '.env.prod'
        environment: 
            - "DB_HOST=database"
            - "REDIS_HOST=cache"

    web:
        container_name: nginx_server
        build: 
            context: ./
            dockerfile: development/web.dockerfile
        volumes: 
            - ./storage/logs/:/var/log/nginx_server
        ports: 
            - 8990:80
        
    database:
        container_name: mysql_database
        image: mysql:8.0
        volumes: 
            - dbdata:/var/lib/mysql
        environment: 
            - "MYSQL_DATABSE=Baly"
            - "MYSQL_USER=admin"
            - "MYSQL_PASSWORD=admin"
            - "MYSQL_ROOT_PASSWORD=root"
        ports: 
            - 8991:3006
    
    cache:
        image: redis:3.0-alpine

volumes: 
    dbdata:

问题可能来自.env.prod的使用

在这种情况下,.env.prod将由Docker加载到OS容器env变量中

Dotnet主要使用操作系统的环境变量


只是为了确保,请尝试在.env.prod中设置APP_键值并重新启动docker:
docker compose restart

请添加您的docker文件哦,对不起,我忘记了这一点。请在编辑部分添加。