Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么docker不在Windows 10上同步容器内的文件?_Php_Windows_Docker_Nginx_Phpstorm - Fatal编程技术网

Php 为什么docker不在Windows 10上同步容器内的文件?

Php 为什么docker不在Windows 10上同步容器内的文件?,php,windows,docker,nginx,phpstorm,Php,Windows,Docker,Nginx,Phpstorm,在Windows10(本地开发)上的上次docker更新(似乎如此)后,我遇到了问题。当我在PhpStorm中(以及在另一个编辑器-Sublime,Notepad+)中更改文件时,过了一段时间,容器中的文件并没有收到更改 可以暂时帮助您的步骤: 如果我完全关闭所有容器,然后再次启动它们docker compose down和docker compose up 如果我进入php fpm容器,对于未更改的文件运行触摸file.php(此文件将立即更改) 我尝试了什么,但没用: 我重新启动了ph

在Windows10(本地开发)上的上次docker更新(似乎如此)后,我遇到了问题。当我在PhpStorm中(以及在另一个编辑器-Sublime,Notepad+)中更改文件时,过了一段时间,容器中的文件并没有收到更改

可以暂时帮助您的步骤:

  • 如果我完全关闭所有容器,然后再次启动它们<代码>docker compose down和docker compose up
  • 如果我进入php fpm容器,对于未更改的文件运行
    触摸file.php
    (此文件将立即更改)
我尝试了什么,但没用:

  • 我重新启动了php-fpm和nginx容器
    docker-compose重新启动php-fpm-nginx
    (是的,这很奇怪,因为关闭了所有容器)
  • 我在PhpStorm设置中更改了使用安全写入(先保存临时文件的更改)
我还检查了inode中容器内的文件。使用
ls-lai file.php
。在更改生效之前和中断之后,我有相同的inode编号。为了打破同步,我必须做的更改并没有确定的数量,这是随机的,有时两个更改就足够了

我有:

Docker版本19.03.5,内部版本633a0ea

docker compose版本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
另外,还有一个公开发行的:


p.p.S.我们需要将Docker从2.2.0.0更新到2.2.0.3,似乎已经修复了

自1月31日起,我在Windows10上也有同样的问题。
我已经在PhpStorm中注释了一行,并使用vim在容器中检查了它。 这些变化并不存在。
如果我上下运行docker compose,更改将进入容器

Docker版本19.03.5,内部版本633a0ea
docker compose版本1.25.4,内部版本8d51620a


自2018年以来,我的docker-compose.yml没有任何更改。

我有一个单独的容器用于同步我的文件夹:

app:
    image: httpd:2.4.38
    volumes:
        - ./:/var/www/html
    command: "echo true"
我只使用基本的apache映像,但是您可以使用任何东西。然后在我的实际容器中,我使用以下
volumes\u from
键:

awesome.scot:
    build: ./build/httpd
    links:
        - php
    ports:
        - 80:80
        - 443:443
    volumes_from:
        - app

php:
    build: ./build/php
    ports:
        - 9000
        - 9001
    volumes_from:
        - app
    links:
        - mariadb
        - mail
    environment:
        APPLICATION_ENV: 'development'
我在使用这个设置时从来没有遇到过问题,文件总是快速同步,我在Mac OSX和MS Windows上都进行了测试


如果您感兴趣,这是我在Github上的完整LAMP堆栈

请添加您的docker compose。yml@RiWedocker compose被添加到docker-compose.yml对我来说很好。有同样的问题。想知道主机上的睡眠是否会触发它。触摸有时会修复它。重新启动docker desktop无法解决此问题。可能与此问题相关: