Heroku:将容器部署到 dyno 时“heroku ps:exec”不起作用

2024-03-25

我正在将 Tensorflow Serving 容器部署到 Heroku,一切正常,但是当我尝试 ssh 到容器中执行某些命令时,Heroku 返回此错误:

C:\Users\whitm\Desktop\CodeProjects\deep-deblurring-serving>heroku ps:exec
Establishing credentials... error
 !    Could not connect to dyno!
 !    Check if the dyno is running with `heroku ps'

Dyno 运行正常:

C:\Users\whitm\Desktop\CodeProjects\deep-deblurring-serving>heroku ps
Free dyno hours quota remaining this month: 550h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

=== web (Free): /bin/sh -c bash\ heroku-exec.sh (1)
web.1: up 2020/04/11 19:13:51 -0400 (~ 38s ago)

我发现了两年前的一个 StackOverflow 问题:Shell 进入在 Heroku dyno 上运行的 Docker 容器。如何? https://stackoverflow.com/questions/46652928/shell-into-a-docker-container-running-on-a-heroku-dyno-how。我已经处理了该问题解释的所有细节,以及有关此特定情况的 Heroku 官方文档:https://devcenter.heroku.com/articles/exec#using-with-docker https://devcenter.heroku.com/articles/exec#using-with-docker,但我无法使其发挥作用。

这是我的 Dockerfile:

FROM tensorflow/serving
LABEL maintainer="Whitman Bohorquez" description="Build tf serving based image. This repo must be used as build context"

COPY / /

RUN apt-get update \
&& apt-get install -y git \
&& git reset --hard \
&& apt-get install -y curl \
&& apt-get install -y openssh-server

ENV MODEL_NAME=deblurrer

# Updates listening ports
RUN echo '#!/bin/bash \n\n\
tensorflow_model_server \
--rest_api_port=$PORT \
--model_name=${MODEL_NAME} \
--model_base_path=/models/${MODEL_NAME} \
"$@"' > /usr/bin/tf_serving_entrypoint.sh \
&& chmod +x /usr/bin/tf_serving_entrypoint.sh

# Setup symbolic link from sh to bash
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

CMD bash heroku-exec.sh

一线特殊照顾RUN rm /bin/sh && ln -s /bin/bash /bin/sh。我已经在容器中安装了 Curl、OpenSSH、Python。我创建文件heroku-exec.sh with [ -z "$SSH_CLIENT" ] && source <(curl --fail --retry 3 -sSL "$HEROKU_EXEC_URL")里面,并成功复制到/app/.profile.d文件夹,即文件的最终路径为/app/.profile.d/heroku-exec.sh。包容性我尝试执行最后一步,就好像容器位于 Heroku 私人空间中一样(事实并非如此),但我将删除它。

不知道还能尝试什么,希望有帮助,我觉得我做错了什么heroku-exec.sh文件,但你怎么想?

提前致谢!


我遇到了同样的问题,这个解决方案对我有用。

Note:确保您从包含 Heroku 所需的所有二进制文件的映像创建容器。

FROM --platform=linux/amd64 heroku/heroku:20
  1. 使用添加构建包这个脚本 https://github.com/heroku/exec-buildpack/blob/master/opt/heroku-exec.sh

  2. 在应用程序上启用 heroku-exec 功能:

    heroku features:enable runtime-heroku-exec

  3. Add a .profile.d我们的 DockerFile 中的目录并将其复制(使用 COPY 命令)到/app/.profile.d。使用heroku-exec.sh from 构建包版本 https://github.com/heroku/exec-buildpack/blob/master/opt/heroku-exec.sh并确保它存在于.profile.d复制之前。

  4. 添加执行权限heroku-exec.sh复制后。

  5. 复制后将此运行命令添加到 Dockerfile -

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

  6. 最后使用heroku ps:exec -a <appName> --dyno=<dynoName>登录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku:将容器部署到 dyno 时“heroku ps:exec”不起作用 的相关文章

  • Docker Engine可以并行启动容器吗

    如果我有并行发出 docker run 命令的脚本 则 docker 引擎似乎会串行处理这些命令 由于使用 docker run 运行最小的容器映像需要大约 100 毫秒才能启动 这是否意味着并行发出命令来运行 1000 个容器将花费 do
  • 使用 Bash 比较 PHP 版本号?

    我有这个脚本 应该确保用户当前的 PHP 版本在某个范围内 尽管它应该可以工作 但某个地方有一个错误 使它认为版本超出范围 有人可以看一下并告诉我我能做什么来解决它 function version echo gawk F printf d
  • shell - temp IFS 仅作为换行符。为什么这不起作用: IFS=$(echo -e '\n')

    我正在尝试使用for在 shell 中迭代带有空格的文件名 我读过一个堆栈溢出问题 https stackoverflow com questions 4128235 bash shell scripting what is the exa
  • LogStash 无法从许可证中检索许可证信息。响应代码“401”通过 URL“http://elasticsearch:9200/_xpack”联系 Elasticsearch

    我正在努力让 Docker LogStash 连接到 Docker ElasticSearch 并启用 xpack 安全性 主要日志有 logstash 1 2020 05 20T22 41 03 950 WARN deprecation
  • Docker:入口点的覆盖涉及CMD规范?

    这是我纯粹好奇的问题 我必须个性化 Docker 映像 特别是这是我的 dockerfile 的摘录 ARG DEFAULT PHP VERSION FROM php DEFAULT PHP VERSION DEFAULT PHP VERS
  • 如何使用AWK从文件中连续输出行

    我有一个多行文件 我想连续输出文件的某些行 比如第一次 从第1行打印到第5行 下次 打印第2行到第6行 依此类推 我发现 AWK 是一个非常有用的函数 我尝试自己编写代码 但它什么也没输出 以下是我的代码 bin bash for n in
  • 如何使用共享数据库在 Heroku 上进行 GIS 查询?

    我有一张带有纬度和经度的地理编码位置表 我希望我的数据库查询返回它们的过滤列表 按距固定点的距离排序 我探索过以下几个选项 Postgresql 的 Earthdistance 贡献 http www postgresql org docs
  • 调试神秘的git+ssh+proxy失败“bash:没有这样的文件或目录”的艰难方法

    我正在尝试通过 SOCKS5 代理克隆 github 存储库 在 ssh config I have Host github com github com ProxyCommand usr bin nc X 5 x 127 0 0 1 70
  • 命名 Docker 卷以共享构建而不更新

    我工作的公司的开发人员要求我用 Docker 做一些不同的事情 然后我也被使用了 目标是拥有 2 个具有以下职责的容器 容器A 节点容器将构建前端 React 应用程序并将捆绑包放入名为的目录中app dist 完成后 容器将停止运行 容器
  • 我无法在 docker 中安装 opencv-contrib-python

    我尝试安装opencv contrib python但我无法让它在 docker 上工作 它说找不到满足 opencv contrib python 要求的版本 I tried pip install opencv contrib pyth
  • 运行 php 脚本的 Bash 脚本

    我有一个 php 脚本 我想使用 bash 脚本运行它 所以我可以使用 Cron 每分钟左右运行 php 脚本 据我所知 我需要创建 bash 脚本来处理 php 脚本 然后我才能使用 Cron 工具 计时器 到目前为止 我被告知我需要输入
  • 如何在带有空格的目录上使用 find ?

    这里有一些奇怪的事情 mkdir p 1 2 3 4 touch 1 2 3 4 file jpg for f in find type f name jpg do echo f done 这返回 1 2 3 4 file jpg and
  • 强制节点在 Windows 上使用 git bash

    我有一个 package json 文件 如下所示 name APP version 3 0 0 private true scripts start node app js test test dbLoad env db test tes
  • 从 PHP 启动交互式 SSH bash 会话

    我正在使用 PHP 编写常见服务器管理任务的快捷方式 我正在使用deployer org 但这应该不重要 我想添加一个任务 用于在通过 SSH 连接到服务器后启动交互式 bash 提示符 例如 您将运行 dep ssh 其中 dep 是一个
  • 通过 bash 调用应用程序时忽略 dyld_insert_libraries

    对于我的应用程序 我使用 DYLD INSERT LIBRARIES 来切换库 我运行的是 Mac OS X El Capitan 如果我在 shell 中设置这些环境变量 export PYTHONHOME HOME anaconda e
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • Docker 未知标志 --mount

    我想使用 mount 将目录从主机挂载到容器flag over volume但我得到 这仅在使用安装标志时才会出现 而不是在使用卷时出现 Command docker run d it name devtest mount type bin
  • Docker:内存文件系统

    我有一个 docker 容器 它对磁盘进行大量读 写操作 我想测试当我的整个 docker 文件系统都在内存中时会发生什么 我在这里看到一些答案说这不会是真正的性能改进 但这是为了测试 我想测试的理想解决方案是共享每个图像的公共部分 并在需
  • Rails Heroku 应用程序错误

    我的项目在本地运行良好 我将它部署到 Heroku 我遇到了一些错误 应用程序无法在那里运行 我正在使用 Rails 4 和 postgresql 无法理解为什么会发生这种情况 在我看来 数据库没有创建 我应该在我的database yml
  • Git 责备文件中的作者列表

    有没有办法找到在 repo 中编辑 java 文件中的类的作者列表git blame 作者列表必须是唯一的 我尝试使用以下命令 但它没有删除重复项 并且每行输出中都有 作者 一词 不需要对输出进行排序 但我希望获得没有任何重复的输出 git

随机推荐

  • 从插入符递归特征消除 (rfe) 结果中检索选定的变量

    在我的工作项目中 我使用 caret 包中的 rfe 函数来进行递归特征消除 我用一个玩具例子来说明我的观点 library mlbench library caret data PimaIndiansDiabetes rfFuncs su
  • 如何对 scipy.sparse.csr_matrix 类型的矩阵进行元素运算?

    在 numpy 中 如果你想计算矩阵每个条目的正弦 元素化 那么 a numpy arange 0 27 3 reshape 3 3 numpy sin a 会完成工作的 如果你想要力量 让我们说每个条目 2 个 a 2 会做的 但如果你有
  • 将参数发送到驻留在另一个进程中的应用程序实例

    我有一个单实例应用程序 c WPF net3 51 检查应用程序是否已实例化是通过互斥体完成的 如果应用程序已在运行 我会从已打开的应用程序实例中打开一个新窗口 到目前为止效果很好 但是 由于应用程序扩展 我现在必须将 e Args 或至少
  • C# .net读取.mdb文件

    我有必要使用 C net 编写一个应用程序来编辑特定的 mdb 文件 它纯粹是一个部门内应用程序 用于读取部门内文件 有争议的是 这些文件不应该是 mdb 文件 但我在这方面没有选择 我正在推动更改为 XML 文件 但那是另一回事 这些文件
  • PlotLegends 使 Manipulate[] ing 图形变得慢如爬行

    我设置了一个简短的程序 使用 Manipulate 显示具有不同参数的相同函数的三个图 我想用参数的值来标记每个函数 我的出发点是让一个传奇人物出现 在绘图中添加 PlotLegend 会导致 Mathematica 变得异常缓慢 我的代码
  • C# 中两个 List<> 相交

    我有两个List
  • Three.js 在平面上旋转相机

    我的应用程序中有一个相机 camera new THREE PerspectiveCamera 75 window innerWidth window innerHeight 0 1 1000 camera position z 1 cam
  • Python OOP 继承:方法解析顺序 (MRO)

    当我使用方法解析顺序 MRO 时 输出存在变化 任何人都可以解释为什么结果会出现这种差异 class A def init self pass def abc self print A class B A def init self pas
  • Python 字符串的所有可能组合

    你好 我正在使用 python 我正在尝试编写一个方法 其中给定一个字符串 它会找到该字符串的每个组合并将其附加到列表中 我将给出字符串并显示我想要的结果 string x god outcome lst g o d go gd og od
  • Passport.js + Express.js 在身份验证后将用户转发到原始目的地

    我有一个应用程序 服务器上是 Node Express Passport 客户端上是 jQuery Backbone js 客户端在 URL 中使用哈希标签 但对于某些功能来说 用户登录非常重要 我希望可以通过 URL 访问该应用程序 例如
  • PHP 阿拉伯文文本使用 strpos 进行比较

    我在 mysql 表中有一个阿拉伯语关键字 例如 1591 1610 1585 1575 1606 请考虑用 代替 带有 的值会自动转换为阿拉伯语 Mysql表编码 utf8 general ci 我从外部资源示例 twitter 中获取一
  • laravel 5 - css 文件未在资产清单中定义?

    我收到 laravel 5 的错误消息 我不明白 Next exception ErrorException with message File build css all css not defined in asset manifest
  • 在 C++ 中如何知道数组包含多少个元素? [复制]

    这个问题在这里已经有答案了 例如 我有一个包含 3 个元素的数组 int array 1 4 66 我怎么知道有多少个元素array包含 执行此操作 std size myarray std size https en cppreferen
  • 无法导入 play.api.db.databases

    我正在 Scala Play 2 5 4 中开发一个应用程序 我想测试我的数据库交互 并尝试通过中推荐的方法来测试这一页 https www playframework com documentation 2 5 x ScalaTestin
  • 如何从命令行使用密码生成 openSSL 密钥?

    首先 如果我不提供密码会怎样 是否使用了某种伪随机短语 我只是在寻找 足够好 的东西来阻止休闲黑客 第二 如何从命令行生成密钥对 并在命令行上提供密码 我终于使用这些命令让它工作 使用 exec 通常认为使用不安全 最好在文件中给出 Pas
  • 使用相对 URL 切换到 SSL

    我想创建一个相对链接来切换当前协议http to https 我工作的最后一个地方在服务器上设置了一些东西 以便您可以实现这一点 但我不太记得它 而且我从来不知道它是如何工作的 这样做的理由是 我不需要在需要在生产和开发环境之间移动的文件中
  • 使用 C#/Win32 将文本写入记事本

    我正在摆弄 Win32 API 和 Windows 消息传递 试图弄清楚事情是如何工作的 我发现了这个问题非常有帮助 https stackoverflow com questions 523405 how to send text to
  • Android M 不允许硬链接吗?

    我有一个带有一些 C 代码的 Android 应用程序 它使用 link 2 系统调用来创建到现有文件的硬链接 当我在 Android 5 0 2 上执行该应用程序时 该应用程序的这一部分可以工作 当我在 Android M 设备上执行完全
  • 使用 mysqli 来自 MySQL 列的下拉列表[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个名为的 MySQL 表Users有柱子Name and NameID Like 名称 名称ID布拉德 BD汤姆 ts 我试图拉动所有
  • Heroku:将容器部署到 dyno 时“heroku ps:exec”不起作用

    我正在将 Tensorflow Serving 容器部署到 Heroku 一切正常 但是当我尝试 ssh 到容器中执行某些命令时 Heroku 返回此错误 C Users whitm Desktop CodeProjects deep de