@okkkman

Как оптимизировать Symfony внутри Docker?

Всем привет

Подскажите пожалуйста, как оптимизировать Symfony 5 проект, используя Docker-Compose во время Dev разработки?
Вношу изменения в контроллер -> обновляю страницу и жду по 15-20 секунд -> повторный заход шустрее, видимо кэшируется

Надоело это

Спасибо
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 2
@sl0
Подозреваю, что проблема не в симфони, а в докере на маке.
Известная проблема в Docker-е под маком - дополнительная задержка, возникающая из-за разных файловых систем. На symfony проекте, например, эта задержка доходит до ~5-10сек на открытие одной страницы. Данную проблему отлично решает утилита docker-sync.


1) - sudo gem install docker-sync
2) - Создает docker-sync.yml файл со следующим содержимым (все последующие комманды должны выполняться из папки с проектом-):

version: '2'

options:
  verbose: true

syncs:
  #название volum-а
  app-sync:
    src: '.'
    sync_excludes: ['var', 'node_modules', 'tests']


3) в файле docker-compose-dev.yml вносим следующие изменения:

volumes:  
  app-sync:
    external: true

Меняем код

services:  
  #...

  php:
    #...
    volumes:
      # ...
      - ./app:/var/www/app


На

services:  
  #...

  php:
    #...
    volumes:
      # ...
      - app-sync:/var/www/app

То есть, чтобы php контейнер смотрел на наш новый volum
4) Далее создаем volum коммандой:

docker volume create app-sync


5) Выполняем команду

docker-sync start


6) И запускаем

docker-compose -f docker-compose-dev.yml up

Для того чтобы не вводить команды с 4-6 каждый раз, можно создать Make файл со следующим содержимым:

OS := $(shell uname)

start_dev:  
ifeq ($(OS),Darwin)  
    docker volume create --name=app-sync
    docker-compose -f docker-compose-dev.yml up -d
    docker-sync start
else  
    docker-compose up -d
endif

stop_dev:           ## Stop the Docker containers  
ifeq ($(OS),Darwin)  
    docker-compose stop
    docker-sync stop
else  
    docker-compose stop
endif


И использовать команду

make start_dev
Ответ написан
https://thewebland.net/development/devops/uskoryae...

второй-третий вариант более менее адекватный, как я считаю, первый дичь

возможно проблему решила wsl2, я ещё не пробовал

это если винда, про мак не в курсе, на лине всё должно работать нормально
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы