容器启动后如何在后台执行命令?

问题描述

我正在使用一个安装 Azurite 作为其要求的一部分的 devcontainer,以便我们可以在容器中模拟 Azure Storage xplat,并从 Functions 等服务中使用它。

但是,当我们将此行添加postStartCommandpostAttachCommand 时,我们会看到不一致的行为:

azurite -s -l /azurite -d /azurite/debug.log &

如果我们删除请求的后台&),命令运行良好,但 VSCode 执行此命令的终端窗口永远不会出现“您可以关闭此窗口”输出。我们认为这很好(确认会很棒)但希望让命令按原样工作。

我们遇到的问题是,在 VSCode 终止此执行块之前,在快速机器上 azurite 显然已启动并进入后台。在速度较慢的机器上,VSCode 在 azurite 能够被启动之前终止该块。至少这是我们目前的工作假设。

有人知道这怎么可能吗?我已经尝试了很多方法包括 Dockerfile 中的 CMD 行来代替它,将 nohup& 结合使用,但似乎没有任何东西能满足我的需求。到目前为止,最好的解决方案是将行放入 .bashrc 并将输出重定向/dev/null,这样当启动 2 个终端时,用户不会在第二个已经运行 azurite 的终端上看到错误

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)