我有一个运行Python程序的Docker镜像。现在我想将此容器作为OpenWhisk操作运行。我该如何做?
我已经看到了其他编程语言的几个示例,以及C和Node.js中出色的黑盒black box骨架方法。但我想更了解OpenWhisk如何与容器交互,并尽可能地仅使用Python。
我已经看到了其他编程语言的几个示例,以及C和Node.js中出色的黑盒black box骨架方法。但我想更了解OpenWhisk如何与容器交互,并尽可能地仅使用Python。
$ wsk sdk install docker
创建dockerSkeleton
目录后,您只需编辑Dockerfile
,确保您的Python(现在是2.7)接受参数并以适当的格式提供输出。以下是概要。我在GitHub上写得更详细。
程序test.py
(或下面在编辑的Dockerfile
中将使用的whatever_name.py
)chmod a+x test.py
)。
- 确保它有第一行的shebang。
- 确保在本地运行。Dockerfile
进行比较,以获取Python脚本test.py
并准备构建docker映像。希望注释可以解释差异。任何在当前目录中的资产(数据文件或模块)以及在requirements.txt
中列出的任何Python依赖项都将成为映像的一部分。# Dockerfile for Python whisk docker action
FROM openwhisk/dockerskeleton
ENV FLASK_PROXY_PORT 8080
# Install our action's Python dependencies
ADD requirements.txt /action/requirements.txt
RUN cd /action; pip install -r requirements.txt
# Ensure source assets are not drawn from the cache
# after this date
ENV REFRESHED_AT 2016-09-05T13:59:39Z
# Add all source assets
ADD . /action
# Rename our executable Python action
ADD test.py /action/exec
# Leave CMD as is for Openwhisk
CMD ["/bin/bash", "-c", "cd actionProxy && python -u actionproxy.py"]
ENV REFRESHED_AT ...
部分,我使用它来确保当构建镜像时,更新的 test.py
层被全新地获取,而不是从缓存中读取。
/init
的部分。非常感谢。 - iainH