도커 컨테이너에있는 내 프로그램은 FileSystemWatcher를 사용하여 로컬 폴더를 모니터링합니다.Docker 내의 FileSystemWatcher가 로컬 디렉토리에 대한 변경을 알지 못합니다.
도커 실행 -v/c/사용자/지원/데스크톱 /받은 편지함 :/사용자/지원/데스크톱 /받은 편지함 -v/c/사용자/지원/데스크톱/보낼 편지함/사용자/support/Desktop/outbox -it --name workbeanRun workbean
Docker Exec을 사용하여 실행중인 컨테이너를 조사했습니다. 받은 편지함 및 보낼 편지함 디렉토리와 그 안에있는 파일을 볼 수 있습니다. 그러나받은 파일 함으로 새 파일을 보내면 FileSystemWatcher 이벤트가 실행되지 않습니다. 도커 컨테이너를 사용하지 않으면 잘 동작하기 때문에 코드에는 아무런 문제가 없습니다.
지시서를 장착 할 때 필요한 다른 것이 있습니까? 또는 FileSystemWatcher가 컨테이너 내부에서도 가능합니까?
좋아, 요청에 따라, 여기에 프로그램이 있습니다 :
내 로컬 드라이브의받은 편지함 폴더 컨테이너의받은 편지함 폴더에 묶여 :
using System;
using System.IO;
namespace workbean
{
class Program
{
FileSystemWatcher watcher = new FileSystemWatcher();
static string sourceDir = "/Users/Support/Desktop/inbox";
static string destDir = "/Users/Support/Desktop/outbox";
static void Main(string[] args)
{
Console.WriteLine("Testing...");
Program p = new Program();
while (true) { }
}
public Program()
{
watcher.Path = sourceDir;
watcher.Filter = "*.*";
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.EnableRaisingEvents = true;
}
static void OnCreated(object source, FileSystemEventArgs e)
{
string[] files = Directory.GetFiles(sourceDir);
foreach (var item in files)
{
string destDir2 = destDir + "/" + Path.GetFileName(item);
File.Move(item, destDir2);
}
}
}
}
코드를 보지 않고도 사용자가 무엇을하고 있는지 정확히 알기가 어렵습니다. – MethodMan