当前位置: 首页 > 面试题库 >

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

宫晟
2023-03-14
问题内容

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

Dockerfile示例:

FROM heroku/heroku:16
CMD 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.1
Establishing credentials... error
 ▸    Could not connect to dyno!
 ▸    Check if the dyno is running with `heroku ps'

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

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

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


问题答案:

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

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



 类似资料:
  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • Debug.DockerFile 运行命令 正在连接RabbitMQ

  • 我已经在我的主机虚拟机上安装了docker。现在想用vi创建一个文件。 但它向我展示了一个错误:

  • 正如文档中所说,如果我想在docker中运行测试容器,我必须考虑以下几点: null

  • 问题内容: Docker对我来说在Mac上运行良好,但是我必须在VirtualBox(或Parallels或VMWare Fusion)中运行docker主机,因为Mac的内核不支持docker。 所以我尝试在Ubuntu桌面上设置应用程序和docker-compose- 本机地,其中docker客户端和docker主机都物理上运行在同一系统上。这可行,但是我正在运行的Docker容器无法写入已安

  • 问题内容: 我正在尝试在Alpine 3.10 docker容器中专门运行GeckoDriver v0.26.0 。 在弄清楚一些事情之后,我碰壁了: 我想念什么? 我怎么到这里 首先启动docker容器: 然后尝试安装GeckoDriver 真?但我只是提取了它…嗯…好 提取正确吗?是对的吗 是。好吧,让我们用谷歌搜索。好吧,也许我应该检查一下信息。默认情况下,Alpine没有。 对于同一问题的