Heroku: "heroku ps: exe c" не работает при развертывании контейнера в Dyno - PullRequest
0 голосов
/ 12 апреля 2020

Я развертываю контейнер Tensorflow Serving в Heroku, все работает нормально, но когда я пытаюсь s sh в контейнер для выполнения некоторых команд, 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 от двух лет: go: Оболочка в контейнер Docker, работающий на Heroku dyno. Как? . Я уже позаботился обо всех деталях, объясненных по этому вопросу, и официальные документы Heroku об этой конкретной c ситуации: https://devcenter.heroku.com/articles/exec#using -с- 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, OpenS SH, Python уже в контейнере. Я создаю файл heroku-exec.sh с [ -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, но что вы думаете?

Заранее спасибо!

...