是否可以运行shell脚本,然后在docker容器中节点app.js

时间:2016-09-20 13:44:05

标签: node.js docker dockerfile

我必须运行一些shell脚本,在 Dockerfile 中调用node app.js命令之前创建一些证书。我该怎么做才能在运行shell脚本后退出并继续运行node app.js网络应用程序。

2 个答案:

答案 0 :(得分:2)

我过去所做的是将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

答案 1 :(得分:0)

您是否希望将证书存储在映像中,因此从映像运行的每个容器的证书都相同?如果是这样,那么您可以在Dockerfile中执行此操作:

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

当您docker build时,RUN指令的输出将保存在图像中,因此您的证书将永久存储,并且您无需在容器启动时创建它们。

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

的脚本