У меня проблема после последнего docker обновления (кажется так) на Windows 10 (локальная разработка). Когда я изменил файлы в PhpStorm (и в других редакторах - Sublime, Notepad +), через некоторое время файлы внутри контейнера не получили изменений.
Шаги, которые могут помочь на некоторое время:
- Если я полностью закрою все контейнеры и после этого возникну их снова.
docker-compose down && docker-compoes up
- Если я попаду в контейнер php -fpm и для файла, который не изменился, запустится
touch file.php
(этот файл будет немедленно изменен).
То, что я пытался, и это не помогло:
- Я перезапустил php -fpm и nginx контейнеры
docker-compose restart php-fpm nginx
(Да, это странно, потому что вниз | вверх для всех контейнеров помог) - Я изменил в настройках PhpStorm Использовать безопасную запись (сначала сохраните изменения для временного файла)
Также я проверил inode для файла внутри контейнера. С ls -lai file.php
. До того, как изменения сработали, и после того, как они сломались, у меня был тот же номер инода Нет определенного количества изменений, которые я должен сделать, чтобы прервать синхронизацию, это случайно, иногда достаточно 2 изменений.
У меня есть:
Docker версия 19.03.5, сборка 633a0ea
docker -композитная версия 1.25.2, сборка 698e2846
docker -compose.yml
version: '3'
services:
nginx:
container_name: pr_kpi-nginx
build:
context: ./
dockerfile: docker/nginx.docker
volumes:
- ./:/var/www/kpi
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./docker/nginx/fastcgi.conf:/etc/nginx/fastcgi.conf
ports:
- "8081:80"
links:
- php-fpm
networks:
- internal
php-fpm:
container_name: pr_kpi-php-fpm
build:
context: ./
dockerfile: docker/php-fpm.docker
volumes:
- ./:/var/www/kpi
links:
- kpi-mysql
environment:
# 192.168.221.1 -> host.docker.internal for Mac and Windows
XDEBUG_CONFIG: "remote_host=host.docker.internal remote_enable=1"
PHP_IDE_CONFIG: "serverName=Docker"
networks:
- internal
mailhog:
container_name: pr_kpi-mailhog
image: mailhog/mailhog
restart: always
ports:
# smtp
- "1025:1025"
# http
- "8025:8025"
networks:
- internal
kpi-mysql:
container_name: pr_kpi-kpi-mysql
image: mysql:5.7
command: mysqld --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
volumes:
- ./docker/storage/kpi-mysql:/var/lib/mysql
environment:
# We must change prod secrets, this is not good approach
- "MYSQL_ROOT_PASSWORD=pass"
- "MYSQL_USER=user"
- "MYSQL_PASSWORD=user_pass"
- "MYSQL_DATABASE=kpi_db"
ports:
- "33061:3306"
networks:
- internal
kpi-npm:
container_name: pr_kpi-npm
build:
context: ./
dockerfile: docker/npm.docker
volumes:
- ./:/var/www/kpi
- /var/www/kpi/admin/node_modules
ports:
- "4200:4200"
networks:
- internal
tty: true
# For xdebug
networks:
internal:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.221.0/28
PS Открыта проблема: https://github.com/docker/for-win/issues/5530
PPS Нам нужно обновить Docker с 2.2.0.0 до 2.2.0.3, кажется, это исправлено