gpt4 book ai didi

docker - 监控 Docker 卷中的文件更改

转载 作者:IT老高 更新时间:2023-10-28 12:46:47 25 4
gpt4 key购买 nike

我有一个运行 python 脚本的 docker 容器:WAITING输入请求并相应地处理数据。

由于我使用 docker 进行开发,我希望这样,每当我更改该 python 文件的源代码(在我的机器中,而不是容器中)时,容器将停止 python 脚本并重新启动它新代码。 因为现在我必须手动停止容器并重新启动它。我也可以监视我这边的文件更改(而不是在容器内),但我想避免这种情况并在容器本身内进行。

我正在使用 docker-compose 的 volumes 选项在我的 FS 和容器之间共享源代码。

为了监控文件更改,我一直在尝试使用 watchmedo来自 watchdog 的 shell 实用程序 python 模块。 我只是有一个奇怪的问题,我无法注意到该 python 源文件的文件更改,除非我从容器内部而不是在我的本地 FS 中编辑它,即使它们是使用 volumes 选项。

我觉得这与 docker 的工作方式有关,也可能与卷有关。我一直试图在网上阅读它,但没有得到太多运气。有任何想法吗?我完全被困住了!

编辑:这是一个更好地解释它的 gif。顶部到 Pane 连接到同一个容器,底部两个连接到我的本地计算机。所有 Pane 都指向同一个文件夹。 gif

最佳答案

你可以让你的容器像这样运行(需要安装 inotify):

while true
do
inotifywait -e create -e modify /path/to/python/script
pkill python
python /path/to/python/script
done

基本上等待文件的变化,在机器上杀死python,再次运行脚本。如果 python 脚本没有在后台运行/以任何方式去守护,你可以使用 & 像这样: python/path/to/python/script &

把这个放到run.sh中,在你的Dockerfile中添加这样的东西

COPY run.sh /run.sh
CMD ["bash", "-l", "/run.sh"]

...你应该很好。

关于docker - 监控 Docker 卷中的文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com