[英]How volume user session in php-fpm container?
我的網站基於帶有docker文件的docker容器內的代碼:
FROM php:7.1-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& docker-php-ext-install mcrypt pdo_mysql opcache gd
#ADD php.conf/opcache.ini /etc/php/7.1/mods-available/opcache.ini
ADD build/prod/php.conf/www.conf /usr/local/etc/php-fpm.d/
ADD build/prod/php.conf/php.ini /usr/local/etc/php/
COPY . /app
WORKDIR /app
RUN chmod 777 -R storage/
RUN php artisan cache:clear && php artisan key:generate
RUN nohup php artisan queue:work &
我建立CI流程只是用代碼創建新的應用程序容器並殺死舊的。 但是,每次進行此類“娛樂”后,登錄的用戶都將注銷。 我確定這是由於舊容器包含PHP會話,我想將它們添加到卷中,但是我無法找到它們。 我的php.ini:
session.save_handler = files
session.use_cookies = 1
session.cookie_path = /
我使用Laravel框架,我的sessions.php配置具有:
'driver' => 'file',
'files' => storage_path('framework/sessions'),
'path' => '/',
路徑到框架/會話的數量無濟於事
當您運行php artisan key:generate
,它將為APP_KEY生成新值。 您可以在.env文件(項目根目錄)中看到它的值
APP_KEY用於加密和解密會話數據(和其他內容),因此當再次生成密鑰時,laravel無法訪問先前的會話數據。
如果您將Docker卷用於會話文件,但是APP_KEY更改,則來自存儲/框架/會話的會話文件將變得無用
通過登錄到本地網站,運行php artisan key:generate
命令並刷新頁面,可以輕松地在本地進行測試。 您將被注銷。
為了解決會話問題,每次創建容器時都使用相同的APP_KEY 。
您可以將密鑰作為環境變量傳遞給docker run -e APP_KEY='<key-here>' ...
,但是您需要啟用環境變量
注意:即使您使用其他會話驅動程序(redis,數據庫,memcached等),密鑰也應保持不變。
有關Laravel應用密鑰的更多信息-它是什么以及它如何工作?
Laravel安裝文檔Application Key
有關Laravel會議的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.