Сборка Docker: класс Symfony 4 PdoSessionHandler не существует - PullRequest
1 голос
/ 08 июля 2019

Я установил следующие параметры в Symfony 4: https://symfony.com/doc/current/doctrine/pdo_session_storage.html

Если образ Docker будет создавать, выдает эту ошибку, независимо от того, как настроен обработчик сеанса 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.

Dockerfile

############################################
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

1 Ответ

0 голосов
/ 08 июля 2019

Если PdoSessionHandler зарегистрирован в конфигурации сеанса под handler_id, очистка кэша установит соединение с базой данных. Тем не менее, нет базы данных для процесса сборки образа докера. В результате служба не может быть загружена.

...