lamo4ok
@lamo4ok
Программист

Как верно создать «вручную», если это вообще требуется, директорию var для Symfony, который живет в контейнере Docker?

Суть такова. Есть Docker-образ, на основании которого мы создаем Docker-контейнер и собираем в нем Symfony-проект, используя Composer. Все успешно создается, собирается и запускается на локалке через "composer install" (контейнер создается отдельной командой, само собой) у себя в консоли - в частности, запускается скрипт "cache:clear": "symfony-cmd", который и создает нам директорию var, в которой создается все то, что нужно для работы фреймворка.

Однако, когда мы собираем этот же проект в проде, мы ничего не запускаем сами в консоли, однако запускаем "composer install --no-dev --no-interaction --no-scripts" в Dockerfile, и у нас не создается директория var (скрипты из секции "scripts": "auto-scripts" из composer.json не были запущены). В итоге при попытке работы с проектом мы получаем что-то вроде:

2020/01/01 00:00:01 [error] 10#10: ... Uncaught Warning: file_put_contents(/www_root/var/cache/dev/srcBlah_KernelDevDebugContainerDeprecations.log): failed to open stream: No such file or directory" while reading upstream, client: 172.0.0.1, server: , request: "GET /testing/logging HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "localhost:8080"

Вопрос: каким образом можно и нужно решать это? Понятно, что самый простой способ - это добавить в Dockerfile что-то вроде "RUN mkdir -p -m777 /www/var", но нет ли каких-то принятых сообществом более нативных способов создать эту директорию, или вообще что-либо изменить в Docker-образе или в фреймворке, чтобы эта директория создавалась автоматически?
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 2
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Запускайте необходимые скрипты в entrypoint, можно с lock-файлом если выполянть их надо один раз.
Ответ написан
Комментировать
Andchir
@Andchir
PHP/Python/JS Фуллстек
Подозреваю, что проект клонируется с гита. Почем нельзя в гит запихать пустую папку "var"?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы