Я развертываю контейнер 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
, но что вы думаете?
Заранее спасибо!