Я обнаружил эту странную проблему в Symfony 5, которая, как мне кажется, связана с docker и Symfony самой.
МОИ НАСТРОЙКИ
docker-compose.yml
version: '3.7'
services:
webapp:
build:
context: ./php/
dockerfile: Dockerfile
container_name: webapp
image: php:7.4.1-fpm-alpine
volumes:
- ../:/srv/app
apache2:
build:
network: host
context: ./apache2/
dockerfile: Dockerfile
container_name: apache2
image: httpd:2.4.39-alpine
ports:
- 8080:80
volumes:
- ../:/srv/app
mysql:
container_name: mysql
image: mysql:latest
ports:
- 13306:3306
volumes:
- mysql:/var/lib/mysql:cached
environment:
MYSQL_ROOT_USER: XXX
MYSQL_ROOT_PASSWORD: XXX
MYSQL_DATABASE: XXX
MYSQL_USER: XXX
MYSQL_PASSWORD: XXX
redis:
container_name: redis
image: redis:5.0.6-alpine
ports:
- 16379:6379
volumes:
- redis:/data:cached
volumes:
mysql:
driver: local
redis:
driver: local
Для фреймворка я, конечно, использую Symfony 5. Я совершенно уверен, что эта настройка верна, потому что я использую что-то подобное для моего другого Laravel проекта, и он работает очень хорошо.
ПРОБЛЕМА
На моем уровне я использую аннотацию @required
. Чтобы быть более точным, я использую это на установщике, подобном этому:
/**
* Get the current request out of RequestStack object.
*
* @param RequestStack $requestStack
* @required
*/
public function setRequest(RequestStack $requestStack): void
{
$this->currentRequest = $requestStack->getCurrentRequest();
}
Я знаю, что этот бит в порядке, поскольку он всегда работал в предыдущей версии. Кажется, проблема в аннотации @required
. Я не уверен, почему, но каждый раз, когда я добавляю его, я получаю:
Похоже, что-то не так с сервером, однако, как только Я вручную очищаю кеш, он работает, и затем после другого вызова (и изменения чего-либо в коде и в вызове почтальона, например, в качестве параметра параметра запроса) он снова ломается, пока я не удаляю @required
или не очищаю кеш.
Я сбит с толку - я не уверен, связано ли это с моей настройкой docker, или в механизме кэширования Symfony есть ошибка или, возможно, это комбинация всех моих подозрений и даже больше.
Моя ставка может быть ошибкой в Symfony кэшировании или что-то не так с тем, как я настроил docker. Однако я только начал над этим работать, я даже не подключаюсь к базе данных на этом этапе, это буквально первые шаги в переписывании этого проекта, поэтому ничего интересного не происходит.
Как вы думаете, ребята? Кто-нибудь видел что-то подобное раньше?
ЧТО Я ПОПРОБОВАЛ
Я попытался очистить кэш, удалив и добавив эту аннотацию, я попытался перезагрузить свой docker, я все обрезал и сделал совершенно новую настройку. Пока ничего не получалось.
ОБНОВЛЕНИЕ 30.01.2020 19: 45
Я попробовал тот же самый метод установки непосредственно на контроллере, и я не могу воспроизвести ошибку. Я думаю, что по какой-то причине ему это не нравится.