Search code examples
docker.net-6.0windows-subsystem-for-linuxdocker-desktop

Docker Desktop on Hyper-V - bind mount do not propagate inotify on file copy


I have a Docker Desktop installed on my dev machine, with WSL 2 disabled. I have shared my entire C:/ drive: File sharing

Then I have a container that inside has a .net 6 (Core) application that uses the FileSystemWatcher to observe one directory, and when a file is pasted inside to read it.

I red in several articles in the internet that WSL2 do not support notification to propagate from the Windows file system to the underlying Linux distribution that docker is running on, hence there is no way that I can bind the directory that I have to "watch" with the app in the container. So I swithed to the old Hyper-V support of docker.

I run the container with the following command:

docker run `
--name mlc-importer `
-v C:/temp/DZBank:/opt/docker/mlc_importer/dfs/DZBank `
-v C:\temp\appsettings.json:/app/appsettings.json `
-v C:\temp\log4net.config:/app/log4net.config `
mlc-importer

The container starts and starts "watching" for new files. The strange thing is, that when I cut a file and paste it in the directory, the app in the container registers the new file and reads it, but when I copy the file and paste in in the directory, the app in teh container do not register it and read it.

Can someone help me because I can't find out what the problem might comes from.

Thanks in advance,

Julian


Solution

  • I managed to solve mu problem, and I'll post it here if somebody encounters the same problem.

    The problem was in teh file itself. This I found out when I started a new container with only debian, and installed inotify-tools, and binded the same path. When I tried to copy the file and paste it in the binded dir the output was:

    modify

    Three times MODIFY event. When I tried to cut the file and paste in in the new dir the events were: create

    So with copy - three times MODIFY, with cut one CREATE and two MODIFY. Then I inspected the copied file and saw this:

    properties

    When I checked the checkbox and hit ok, everything is ok. And since in the container app (from the post), I hook to only "File created" callback, it not triggers when the file is only modified.

    Hope this helps someone with a similar problem