python - 如何在IBM Cloud功能中运行docker镜像?

标签 python docker ibm-cloud-functions

我有一个想要在IBM Cloud函数中运行的简单Python程序。 las,它需要两个库(O365和PySnow),因此我必须对其进行Docker化,并且它必须能够接受来自STDIN的Json feed。我成功做到了:

FROM python:3
ADD requirements.txt ./
RUN pip install -r requirements.txt
ADD ./main ./main
WORKDIR /main
CMD ["python", "main.py"]

这与运行:cat env_var.json | docker run -i f9bf70b8fc89
我已经将Docker容器添加到IBM Cloud Functions中,如下所示:
ibmcloud fn action create e2t-bridge --docker [username]/e2t-bridge
但是,当我运行它时,它会超时。

现在,我确实看到了一条可能的解决方案路线,在其中将其泊坞为Openwhisk应用程序。但是为此,我需要从我的Python应用程序创建一个二进制文件,然后将其加载到一个相当复杂的Openwhisk框架中,我认为呢?

但是拥有一个可以简单运行的文件是我Docker的全部重点,因此创建一种解释语言的二进制文件,然后将其添加到Openwhisk Docker中,感觉非常笨拙。

解决此问题的最佳方法是什么?

最佳答案

事实证明,您不需要创建二进制文件,只需要像下面这样编辑OpenWhisk框架即可:

# 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"]

并确保您的Python代码接受来自stdin的Json feed:
json_input = json.loads(sys.argv[1])

整个解释在这里:https://github.com/iainhouston/dockerPython

关于python - 如何在IBM Cloud功能中运行docker镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431437/

相关文章:

android - 如何使用 phonegap 在 django 服务器中上传文件?

python - 二维数组的numpy 3d张量

angular - 运行 headless Chromium 浏览器会抛出错误 'Failed to read DnsConfig'(在 Docker 容器内)

mysql - Laravel Cron php_network_getaddresses : getaddrinfo failed

node.js - OpenWhisk 返回整个响应对象而不仅仅是数据

node.js - 从 IBM Cloud Function 中的 Node.js 访问 Sharepoint 文档

python - Django - syncdb 导致错误 : "DatabaseError: no such table: django_site"

ruby - 运行 Docker 时无法运行 ruby​​ 命令

openwhisk - IBM Cloud Functions WebAction 给出空响应 (204)

python - 避免 python 循环删除容易出错的值