Прогрев кеша Symfony во время процесса сборки образа контейнера назван неправильноPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Прогрев кеша Symfony во время процесса сборки образа контейнера назван неправильно

Сообщение Anonymous »

У меня есть контейнерное приложение Symfony.
Последний шаг процесса — разогрев кеша, чтобы изображение можно было использовать «как есть». Хотя команда работает нормально, конечным результатом является наличие двух каталогов кэша для среды: один с правильным именем, а другой с тильдой (~).
root@c238674823ae:/app/var/cache# ls -la
total 0
drwxr-xr-x 1 root root 16 Jan 2 11:46 .
drwxr-xr-x 1 root root 72 Jan 2 11:46 ..
drwxr-xr-x 1 root root 146 Jan 2 11:46 prod
drwxr-xr-x 1 root root 146 Jan 2 11:46 pro~

В каталоге кэша отсутствуют некоторые каталоги с «правильным» именем, что приводит к сбою приложения.
Это шаги Dockerfile, где кеш разогревается:
ENV COMPOSER_MEMORY_LIMIT=-1

RUN set -eux; \
mkdir -p var/cache var/log; \
composer dump-autoload -o --apcu --no-dev; \
composer dump-env prod; \
chmod +x bin/console; sync;

RUN set eux; \
rm -rf var/cache/* && \
bin/console cache:clear && \
bin/console assets:install public && \
bin/console importmap:install && \
bin/console sass:build -v && \
bin/console asset-map:compile;


Если я вручную выполняю rm -rf var/cache/prod && mv var/cache/pro~ var/cache/prod, приложение работает нормально... но я Боюсь полагаться на это, поскольку это не кажется нормальным или ожидаемым поведением.
Если после запуска приложения я запускаю bin/consolecache:clear, теперь приложение работает, но это требует от нас запуска команды после развертывания нового образа, что приводит к простою на пару секунд при каждом развертывании, что нежелательно.
Почему команда кэша: очистить не завершается правильно? Почему, если он не завершился правильно, вышел без ошибки?
А теперь глупость. Если я сделаю это (дважды запустив кэш: очистить):
RUN set eux; \
rm -rf var/cache/* && \
bin/console cache:clear && \
bin/console cache:clear && \
bin/console assets:install public && \
bin/console importmap:install && \
bin/console sass:build -v && \
bin/console asset-map:compile;

теперь это работает, и есть один каталог кэша :(
docker run -it web-api/env-prod:local ls -la var/cache
total 0
drwxr-xr-x 1 root root 8 Jan 2 12:11 .
drwxr-xr-x 1 root root 72 Jan 2 12:11 ..
drwxr-xr-x 1 root root 170 Jan 2 12:11 prod


Подробнее здесь: https://stackoverflow.com/questions/793 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»