簡體   English   中英

Docker構建:Symfony 4類PdoSessionHandler不存在

[英]Docker build: Symfony 4 class PdoSessionHandler does not exist

我已經使用Symfony 4設置了以下設置: https : //symfony.com/doc/current/doctrine/pdo_session_storage.html

如果docker image將生成輸出此錯誤,則無論pdo會話處理程序如何配置。

Generating autoload files
ocramius/package-versions:  Generating version class...
ocramius/package-versions: ...done generating version class
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!  
!!  In DefinitionErrorExceptionPass.php line 54:
!!                                                                                 
!!    Invalid service "Symfony\Component\HttpFoundation\Session\Storage\Handler\P  
!!    doSessionHandler": class "Symfony\Component\HttpFoundation\Session\Storage\  
!!    Handler\PdoSessionHandler" does not exist.                                   
!!                                                                                 
!!  
!!

如果我將handler_id設置為如下所示的文件: https ://symfony.com/doc/current/session.html Docker鏡像將被構建而不會出現問題。 之后,我將此圖像作為容器啟動,並將handler_id設置為PdoSessionHandler ,清除緩存即可使用。 但是,為什么在清除緩存過程中缺少服務或類PdoSessionHandler 這僅通過構建docker映像來發生。

Docker文件

############################################
FROM alpine:3.8 as build-api
############################################

ENV APP_ENV prod

RUN apk update \
  && apk upgrade \
  && apk add \
  composer \
  git \
  openssh-client \
  php7-apcu \
  php7-bcmath \
  php7-ctype \
  php7-curl \
  php7-dev \
  php7-dom \
  php7-fileinfo \
  php7-fpm \
  php7-gd \
  php7-imagick \
  php7-imap \
  php7-intl \
  php7-mbstring \
  php7-pdo_pgsql \
  php7-pgsql \
  php7-simplexml \
  php7-soap \
  php7-tokenizer \
  php7-xml \
  php7-zip \
  php7-zmq

RUN echo 'memory_limit = 2G' >> /etc/php7/php.ini

COPY app /app
COPY --from=build-ssh /ssh /root/.ssh

WORKDIR /app
RUN composer --no-interaction install

############################################
FROM alpine:3.8 as env-app
############################################

ENV APP_ENV prod

RUN apk update \
  && apk upgrade \
  && apk add \
  ghostscript \
  nginx \
  pdftk \
  php7-apcu \
  php7-bcmath \
  php7-ctype \
  php7-curl \
  php7-dev \
  php7-dom \
  php7-fileinfo \
  php7-fpm \
  php7-gd \
  php7-iconv \
  php7-imagick \
  php7-imap \
  php7-intl \
  php7-json \
  php7-mailparse \
  php7-mbstring \
  php7-pdo_pgsql \
  php7-simplexml \
  php7-session \
  php7-soap \
  php7-tokenizer \
  php7-xml \
  php7-xmlreader \
  php7-xmlwriter \
  php7-zip \
  php7-zmq \
  qpdf \
  tzdata

RUN cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime

RUN apk add nginx \
  && adduser -D -g 'www' www \
  && chown -R www:www /var/lib/nginx \
  && mkdir -p /run/nginx

RUN apk add php7-fpm \
  && mkdir -p /run/php

COPY --chown=www:www --from=build-api /app /app

RUN chown -R www:www /app \
  && chmod -R 500 /app \
  && chmod -R 700 /app/var

WORKDIR /app
CMD php-fpm7 && nginx -g "daemon off;"

EXPOSE 80

如果PdoSessionHandler在session config中的handler_id下注冊,則清除緩存將建立與數據庫的連接。 但是,沒有用於Docker映像構建過程的數據庫。 結果,該服務無法加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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