微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在使用一个安装 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 举报,一经查实,本站将立刻删除。