不再在Docker中使用dotnet watch的主要理由是它会导致容器重新生成,并且会消耗大量的资源和时间。在Docker中使用dotnet watch会导致文件更改时容器重新构建,并重新运行整个应用程序。这会导致容器的重新生成和重新启动,这在开发过程中会非常耗时。
相反,可以使用Docker容器之外的工具来实现类似的自动重新加载功能,例如使用Nodemon或Supervisor。
以下是一个示例解决方法,使用Supervisor来监控应用程序并在更改时重新加载:
supervisord.conf
的文件,并将以下内容添加到文件中:[supervisord]
nodaemon=true
[program:dotnet]
command=dotnet run
directory=/path/to/your/app
autostart=true
autorestart=true
redirect_stderr=true
RUN apt-get update && apt-get install -y supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]
这将启动Supervisor,并使用配置文件supervisord.conf
运行应用程序。当应用程序中的文件更改时,Supervisor会自动检测到更改并重新加载应用程序。
请注意,需要将/path/to/your/app
替换为实际应用程序的路径。
使用Supervisor来监控应用程序的更改并自动重新加载,可以避免在Docker容器中使用dotnet watch时的重新构建和重新启动的开销。