问题描述
FROM python:3.7
copY ./src /data/python
workdir /data/python
RUN pip install --no-cache-dir flask
EXPOSE 8080
CMD ["python","main.py"]
- main.py
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return {'body': os.environ.items()}
def run():
app.run(host='0.0.0.0',port=8080)
if __name__ == '__main__':
run()
点击调用结果
[
"2021-01-29T09:53:30.727847Z stdout: * Serving Flask app \"main\" (lazy loading)","2021-01-29T09:53:30.727905Z stdout: * Environment: production","2021-01-29T09:53:30.727913Z stdout: WARNING: This is a development server. Do not use it in a production deployment.","2021-01-29T09:53:30.727918Z stdout: Use a production Wsgi server instead.","2021-01-29T09:53:30.727923Z stdout: * Debug mode: off","2021-01-29T09:53:30.731130Z stderr: * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)","2021-01-29T09:53:30.747035Z stderr: 172.30.139.167 - - [29/Jan/2021 09:53:30] \"\u001b[33mPOST /init HTTP/1.1\u001b[0m\" 404 -","2021-01-29T09:53:30.748Z stderr: The action did not initialize or run as expected. Log data might be missing."
]
我已将 Docker 容器添加到 IBM Cloud Functions
解决方法
上传到 IBM Cloud Functions 的 Docker 映像必须实现某些 REST 接口。实现此目标的最简单方法是将您的容器基于 openwhisk/dockerskeleton
映像。
请看 How to run a docker image in IBM Cloud functions? 和https://github.com/iainhouston/dockerPython 更多详情
,IBM Cloud Functions 的文档对 how to create Docker-based functions 有一些指示。恕我直言,云函数更适用于短期运行的无服务器工作负载,我想以 IBM Cloud Code Engine 的形式向您指出另一种无服务器技术。它的模型基于 Docker 容器,其用例之一是基于 http 的 Web 应用程序,例如您的 Flask 应用程序。
您可以根据需要定义 Dockerfile,不需要特殊的骨架,只需遵循此 guide on Dockerfile best practices for Code Engine。