如何解决容器启动后如何在后台执行命令?
我正在使用一个安装 Azurite 作为其要求的一部分的 devcontainer,以便我们可以在容器中模拟 Azure Storage xplat,并从 Functions 等服务中使用它。
但是,当我们将此行添加到 postStartCommand
或 postAttachCommand
时,我们会看到不一致的行为:
azurite -s -l /azurite -d /azurite/debug.log &
如果我们删除请求的后台(&
),命令运行良好,但 VSCode 执行此命令的终端窗口永远不会出现“您可以关闭此窗口”输出。我们认为这很好(确认会很棒)但希望让命令按原样工作。
我们遇到的问题是,在 VSCode 终止此执行块之前,在快速机器上 azurite 显然已启动并进入后台。在速度较慢的机器上,VSCode 在 azurite 能够被启动之前终止该块。至少这是我们目前的工作假设。
有人知道这怎么可能吗?我已经尝试了很多方法,包括 Dockerfile 中的 CMD
行来代替它,将 nohup
与 &
结合使用,但似乎没有任何东西能满足我的需求。到目前为止,最好的解决方案是将行放入 .bashrc
并将输出重定向到 /dev/null
,这样当启动 2 个终端时,用户不会在第二个已经运行 azurite 的终端上看到错误。
提前致谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。