如何使用 ENTRYPOINT 或 CMD 从 docker 进程捕获标准输出并通过管道传输到另一个进程
How to capture stdout from docker process and pipe to another using ENTRYPOINT or CMD
我有这个:
ENTRYPOINT ["node", ".", "|", "tee", ">(echo 'bar')"]
但是好像不行,可能是因为我的容器里没有安装tee
。
这是正确的方法吗?我想 运行 ECS 上的容器,将 stdout/stderr 从节点进程发送到容器 stdout/stderr 但也捕获它。
例如,我尝试这样做:
ENTRYPOINT ["node", ".", "|", "cat > /dev/null"]
并没有像预期的那样工作。但是,这似乎确实有效:
ENTRYPOINT node . | cat > /dev/null
有人知道为什么吗?
I want to run the container on ECS, send the stdout/stderr from the
node process to the containers stdout/stderr
如果节点是容器的主进程,则确实需要 cat 或 tee 等,它会将日志写入容器的 stdout/stderr。如果您将日志写入文件,那么最好将这些日志记录到控制台,因为将日志写入容器中的文件毫无用处。
此外,如果已配置,您将能够在云手表中捕获这些日志。
只需添加这个就足以处理日志案例了。
FROM node:alpine
WORKDIR /app
CMD ["node", "app/server.js"]
这就是日志流的样子。
或者如果你想推送到 ELK 那么流程将是
我有这个:
ENTRYPOINT ["node", ".", "|", "tee", ">(echo 'bar')"]
但是好像不行,可能是因为我的容器里没有安装tee
。
这是正确的方法吗?我想 运行 ECS 上的容器,将 stdout/stderr 从节点进程发送到容器 stdout/stderr 但也捕获它。
例如,我尝试这样做:
ENTRYPOINT ["node", ".", "|", "cat > /dev/null"]
并没有像预期的那样工作。但是,这似乎确实有效:
ENTRYPOINT node . | cat > /dev/null
有人知道为什么吗?
I want to run the container on ECS, send the stdout/stderr from the node process to the containers stdout/stderr
如果节点是容器的主进程,则确实需要 cat 或 tee 等,它会将日志写入容器的 stdout/stderr。如果您将日志写入文件,那么最好将这些日志记录到控制台,因为将日志写入容器中的文件毫无用处。
此外,如果已配置,您将能够在云手表中捕获这些日志。
只需添加这个就足以处理日志案例了。
FROM node:alpine
WORKDIR /app
CMD ["node", "app/server.js"]
这就是日志流的样子。
或者如果你想推送到 ELK 那么流程将是