有可能在Docker容器中运行shell脚本,然后运行节点app.js

我必须运行一些shell脚本,在Dockerfile中调用node app.js之前创build一些证书。 我怎么做,所以它不会退出后运行一个shell脚本,并将继续运行node app.js Web应用程序。

我过去所做的是在Dockerfile中定义的入口点是shell脚本,然后在该脚本中运行node命令。

所以在我的Dockerfile中有这个 –

 ENTRYPOINT ["./docker-start.sh"] 

而我的docker-start.sh脚本包含这个:

 #! /bin/bash # Initialization logic can go here echo "Starting node..." node start.js $* # The $* allows me to pass command line arguments that were passed to the docker run command. # Cleanup logic can go here 

你是否希望将证书存储在图像中,因此对于从图像运行的每个容器,证书都是相同的? 如果是这样,那么你可以在Dockerfile中做到这一点:

 COPY create-certs.sh /create-certs.sh RUN /create-certs.sh CMD ["node", "etc."] 

当你docker buildRUN指令的输出将被保存在图像中,所以你的证书被永久的存储起来,并且你不需要在容器启动的时候创build它们。

如果您需要为每个容器创build需要的证书,那么您可以使用引导程序shell脚本执行多个步骤 – 检查证书是否存在,如果需要则创build它们,然后启动Node应用程序。 bootstrap shell脚本就是你用于CMD