Php docker容器中未指定应用程序加密密钥
我想开始和docker合作。我已经开始使用nginx、laravel和mysql容器。但我有问题,当我想访问我的页面时,我得到: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')进行
未指定任何应用程序加密密钥
在cointainer中的env文件中,我有APP_KEY=base64:isqaS8uLDmiO47hZLTTKmheHM13uBkeA6wTWG1nF5E4=
由命令php artisan KEY:generate
生成,从中我成功地设置了应用程序密钥。
当我通过php artisan tinker
valueenv('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文件哦,对不起,我忘记了这一点。请在编辑部分添加。