【发布时间】:2017-04-05 10:45:39
【问题描述】:
我有一个 nodemon 在开发中的 docker 容器中运行。代码更改时,我已成功设置实时重新加载。
但是,有时我会编写一些代码导致 nodemon 崩溃。键入“rs”(在本地运行时)可以手动重新启动 Nodemon。
问题是在 docker 容器中我无法让它重新启动。
我尝试了以下方法,但没有成功:
docker exec -it add92j rs ====> rs 未找到
docker exec -it add92j sh -c echo rs ====> 只是回应 rs
我也尝试过docker attach,然后输入 rs 但它不起作用。
我也尝试使用带有docker exec -it sh 的shell,使用ps aux 获取进程,然后:
echo rs > /proc/PID/fd/0
但这也行不通。 (请注意,我已经使用 rs 和 rs\n 并使用 printf 和 echo 尝试了上述所有变体。
在 nodemon github 中,我看到它寻找 'rs\n' 来触发重启,并且引用了 SIGUSR2。因此,我也尝试过kill -12 PID,但这只会杀死我的进程。请注意,我检查了 12 在我的容器中确实是 SIGUSR2。
ps aux 在我的容器中实际运行的进程是:
1 root 0:00 npm
14 root 0:00 sh -c DEBUG=app:* nodemon
15 root 0:00 node /workspace/node_modules/.bin/nodemon
29 root 0:00 sh -c node server/register.js
30 root 0:01 node server/register.js
所以我的问题是,如何将文本发送到标准输入以用于 docker 中的进程?
【问题讨论】:
-
echo rs | docker exec -it add92j呢? -
您是否使用
-ti选项为nodemon 运行初始docker run?在尝试docker attach之前?
标签: linux docker containers