[英]Why docker not syncing files inside container on Windows 10?
我在 Windows 10(本地開發)上的最后一次 docker 更新(似乎如此)后遇到了問題。 當我在 PhpStorm(以及另一個編輯器 - Sublime、Notepad+)中更改文件時,一段時間后,容器內的文件沒有收到更改。
可以幫助一段時間的步驟:
docker-compose down && docker-compoes up
touch file.php
(此文件將立即更改)。我嘗試過但沒有幫助:
docker-compose restart php-fpm nginx
(是的,這很奇怪,因為 down|up 對所有容器都有幫助) 我還檢查了容器內文件的 inode。 使用ls -lai file.php
。 在更改生效之前和中斷之后,我有相同的 inode 編號。 沒有確定數量的更改我必須做來中斷同步,它是隨機的,有時 2 個更改就足夠了。
我有:
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
PS 有open issue: https : //github.com/docker/for-win/issues/5530
PPS 我們需要將 Docker 從 2.2.0.0 更新到 2.2.0.3,似乎已修復
我有一個單獨的容器用於同步我的文件夾:
app:
image: httpd:2.4.38
volumes:
- ./:/var/www/html
command: "echo true"
我只使用基本的 apache 圖像,不過你可以使用任何東西。 然后在我的實際容器中,我使用以下volumes_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 堆棧https://github.com/delboy1978uk/lamp
自 1 月 31 日以來,我在 Windows10 上遇到了同樣的問題。
我在 PhpStorm 中注釋了一行,並使用 vim 在容器中檢查了它。 變化並不存在。
如果我上下運行 docker-compose,更改會在容器中進行。
Docker 版本 19.03.5,構建 633a0ea
docker-compose 版本 1.25.4,構建 8d51620a
自 2018 年以來,我的 docker-compose.yml 中沒有任何變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.