簡體   English   中英

如何在php-fpm容器中進行批量用戶會話?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM