Openwhisk Docker отличается от облачного интерфейса командной строки IBM от своего внешнего интерфейса - PullRequest
0 голосов
/ 04 июня 2019

Я хочу запустить свою программу на Python в облачных функциях IBM, поскольку из-за зависимостей это нужно делать в OpenWhisk Docker. Я изменил свой код, чтобы он принимал json:

json_input = json.loads(sys.argv[1])
INSTANCE_NAME = json_input['INSTANCE_NAME']

Я могу запустить его из терминала:

python main/main.py '{"INSTANCE_NAME": "example"}'

Я добавил эту программу на Python в OpenWhisk с этим Dockerfile:

# Dockerfile for example whisk docker action
FROM openwhisk/dockerskeleton

ENV FLASK_PROXY_PORT 8080

### Add source file(s)
ADD requirements.txt /action/requirements.txt
RUN cd /action; pip install -r requirements.txt

# Move the file to 
ADD ./main /action
# Rename our executable Python action
ADD /main/main.py /action/exec

CMD ["/bin/bash", "-c", "cd actionProxy && python -u actionproxy.py"]

Но теперь, если я запускаю его с помощью IBM Cloud CLI, я просто возвращаю свой Json:

ibmcloud fn action invoke --result e2t-whisk --param-file ../env_var.json
# {"INSTANCE_NAME": "example"}

И если я запускаю с веб-сайта IBM Cloud Functions ту же ленту Json, я получаю сообщение об ошибке, как будто его даже нет.

stderr: INSTANCE_NAME = json_input['INSTANCE_NAME']",
stderr: KeyError: 'INSTANCE_NAME'"

Что может быть плохого в том, что код запускается при прямом вызове, но не из контейнера OpenWhisk?

...