【发布时间】:2019-08-21 23:46:40
【问题描述】:
我有一个 node.js 脚本在节点 docker 容器中运行,该脚本当前将其输出转储到容器和 STDOUT 中的日志文件中。许多官方 docker 镜像允许您运行 docker logs container 以查看该容器中运行的任何内容的错误。
我看到很多 Docker 只是捕获 STD 输出的参考资料,这就是 docker logs container 看到的内容,但我找不到任何关于如何从容器内运行的脚本中正确设置它的文档。
目前我的 Dockerfile 以一种开发方式设置,最后一行是
ENTRYPOINT [ "npm", "run", "watch"]
它监视我的文件的更改以在容器中运行构建脚本。因此,对于开发,我目前使用docker exec -it container /bin/sh 并手动执行脚本。
当我使用 docker logs container 时,我看到 npm 构建链中的错误,但从容器中手动运行脚本时,我的脚本中什么也没有。
我的脚本使用
process.stdout.write(data)
process.stderr.write(data)
在我为我的脚本完全重做我的 Dockerfile 之前,我认为 docker logs 重定向 STDOUT 和 STDERR 来自 PID 1 的进程 而不是在不同 PID 上运行的任何其他进程是否正确?
如果我想使用docker logs 捕获我的脚本输出,只需更改ENTRYPOINT 以便它直接运行我的脚本?
ENTRYPOINT [ "node", "myscript" ]
【问题讨论】:
标签: javascript node.js docker logging