仅在第一次启动时在 Docker 容器中运行命令

新手上路,请多包涵

我有一个使用脚本( /bin/bash /init.sh )作为入口点的 Docker 映像。我只想在容器第一次启动时执行这个脚本。当容器在 docker 守护进程崩溃后重新启动或再次启动时,应该省略它。

有没有办法用 docker 本身来做到这一点,或者是否必须在脚本中实现某种检查?

原文由 user2995925 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

我有同样的问题,这里有一个简单的程序(即解决方法)来解决它:

步骤1:

创建一个包含以下代码的“myStartupScript.sh”脚本:

 CONTAINER_ALREADY_STARTED="CONTAINER_ALREADY_STARTED_PLACEHOLDER"
if [ ! -e $CONTAINER_ALREADY_STARTED ]; then
    touch $CONTAINER_ALREADY_STARTED
    echo "-- First container startup --"
    # YOUR_JUST_ONCE_LOGIC_HERE
else
    echo "-- Not first container startup --"
fi

第2步:

将“# YOUR_JUST_ONCE_LOGIC_HERE”行替换为您希望仅在第一次启动容器时执行的代码

第 3 步:

将脚本设置为 Dockerfile 的入口点:

 ENTRYPOINT ["/myStartupScript.sh"]

总之,逻辑非常简单,它检查文件系统中是否存在特定文件;如果没有,它会创建它并执行你的一次性代码。下次启动容器时,文件位于文件系统中,因此不会执行代码。

原文由 Francesco Cina 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏