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