装入运行在Heroku dyno上的Docker容器中怎么样?

【字号: 日期:2024-04-01浏览:38作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决装入运行在Heroku dyno上的Docker容器中怎么样??

TL; DR确保bash已安装在映像中,并将其添加到您的Dockerfile中:

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

与文档令人信服的相反,Heroku不支持现成heroku ps:exec在dyno中运行的Docker容器。

引用我从Heroku小组收到的回复:

我们的ps:exec功能…通过将bash文件注入dynos,在后台打开另一个端口,并允许您连接到它,从而起作用。

Docker使用的默认shell是/ bin / sh,它与Heroku Exec脚本不兼容(需要/ bin / bash)。

您可以使用一种解决方法。将以下内容放入您的Dockerfile中:

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

这绝对是我们产品中的一个空白,我们将努力使它变得更好。

解决方法

给定一个在其中运行容器的dyno,Heroku等价于docker exec -it blarg/bin/bash什么?就是说,一个人怎么能在已经运行的容器中打开一个外壳?

Dockerfile示例:

FROM heroku/heroku:16CMD while true; do sleep 1; done

示例运行:

$ heroku container:push my_app<wait a minute>$ heroku ps=== my_app (Free): /bin/sh -c while true; do sleep 1; done (1) my_app.1: up 2017/10/09 12:13:07 -0600 (~ 4m ago)

到目前为止,一切都很好。

但现在…

$ heroku ps:exec --dyno=my_app.1Establishing credentials... error ▸ Could not connect to dyno! ▸ Check if the dyno is running with `heroku ps’

从好的方面来说,我检查heroku ps了这一点,它表明测功机仍在运行。

是的,我已经完成了Heroku建议的所有支持Docker支持的工作。每文档,我已经用我选择的基本图像,同时确保试过bash,curl,openssh,和python是存在的。我还尝试使用Heroku-16基本图像,如上面的示例所示。

(链接的文档还引用了私有空间所需的步骤。由于我没有使用私有空间,因此我没有应用这些步骤。)

相关文章: