繁体   English   中英

从 bash 文件作为 Docker CMD 执行两个节点命令

[英]Execute two node commands from a bash file as Docker CMD

我正在尝试从名为start.sh的文件运行 nodejs 应用程序。

我正在使用这个文件,因为我想以串行方式执行两个进程作为 Dockerfile 中的 CMD。

这是内容:

#!/bin/sh
node /get-secrets.mjs -c /secrets-config.json -t /.env.production
npm run start -p 8000

如您所见,我想执行两件事:

  • 首先执行get-secrets.mjs 文件,这是一个内部使用commander.js的小脚本,两个读取标志-c-t (分别为--config 和--target)。 这些标志接收字符串参数来定位文件。
  • 第二个命令只是我的节点 js 应用程序的开始。

我不知道我应该如何编写这个文件,因为这些命令在我的机器上工作,但在容器中,我的格式似乎是错误的。

这是迄今为止的问题:

错误信息

我应该如何将参数传递给 mjs 脚本?

如果其他人觉得这个有用,我用这个解决了我的问题:

FROM node:16.14-alpine

# Dependencies that my script needs
RUN npm i -g @aws-sdk/client-secrets-manager@3.121.0 commander@9.3.0

# Folder for my source code
WORKDIR /app

# SOME OTHER COMMANDS
# ...

# In this folder I have the start.sh and the get-secrets.mjs files
COPY ${SOURCE_PATH}/server-helpers/* ./

# This was required since I am working on windows
RUN sed -i -e 's/\r$//' start.sh
RUN chmod +x start.sh
ENTRYPOINT ["/app/start.sh" ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM