首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Dockerfile中使用管道的CMD不转发

在Dockerfile中使用管道的CMD不转发
EN

Stack Overflow用户
提问于 2021-11-28 14:23:16
回答 1查看 38关注 0票数 1

我有这样的命令来启动这样的Node.js have服务器:

代码语言:javascript
运行
复制
node --inspect=0.0.0.0:9229 --preserve-symlinks /app/api/dist/server.js | pino-pretty

我把它作为CMD放到一个Dockerfile中

代码语言:javascript
运行
复制
CMD ["node", "--inspect=0.0.0.0:9229", "--preserve-symlinks" ,"/app/api/dist/server.js", "|","pino-pretty"]

该服务在调用docker run时启动,但|被忽略,因此不会将日志转发给pino-pretty

我在这里做错什么了?

我可以将整个命令放入start.sh或使用CMD ["npm", "run", "start:prod"],但我想了解核心问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-28 14:58:02

我可以将整个命令放入start.sh或使用CMD "npm“、"run”、"start:prod“,但我想了解核心问题。

管道是一个shell结构,例如/bin/sh/bin/bash和类似的shell的特性。当您使用json/exec语法定义CMD时,您将显式地告诉docker在没有shell的情况下运行命令。因此,您需要在脚本中运行命令,显式调用shell,或者使用字符串/shell语法运行以让停靠程序使用shell执行命令:

代码语言:javascript
运行
复制
CMD node --inspect=0.0.0.0:9229 --preserve-symlinks /app/api/dist/server.js | pino-pretty
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70144303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档