我有這個命令來啟動一個 Node.js 網路服務器,如下所示:
node --inspect=0.0.0.0:9229 --preserve-symlinks /app/api/dist/server.js | pino-pretty
我將它放入一個 Dockerfile 中CMD:
CMD ["node", "--inspect=0.0.0.0:9229", "--preserve-symlinks" ,"/app/api/dist/server.js", "|","pino-pretty"]
該服務在呼叫時啟動,docker run 但|被忽略,因此沒有日志轉發到pino-pretty。
我在這里做錯了什么?
我可以將整個命令放入 astart.sh或 useCMD ["npm", "run", "start:prod"]但我想了解核心問題。
uj5u.com熱心網友回復:
我可以將整個命令放入 start.sh 或使用 CMD ["npm", "run", "start:prod"] 但我想了解核心問題。
管道是一個殼結構,例如一個的特征/bin/sh,/bin/bash以及類似的殼。當您使用 json/exec 語法定義 CMD 時,您明確地告訴 docker 在沒有 shell 的情況下運行命令。因此,您需要在腳本中運行命令,顯式呼叫 shell,或者使用 string/shell 語法運行以讓 docker 使用 shell 執行命令:
CMD node --inspect=0.0.0.0:9229 --preserve-symlinks /app/api/dist/server.js | pino-pretty
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369497.html
