PHP
40
Вклад в тег
Известная проблема в 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