0
FROM python:3.7
COPY ./src /data/python
WORKDIR /data/python
RUN pip install --no-cache-dir flask
EXPOSE 8080
CMD ["python", "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

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

4

2 回答 2

0

IBM Cloud Functions 的文档有一些关于如何创建基于 Docker 的函数的指导。恕我直言,云功能更适用于短期运行的无服务器工作负载,我想向您指出另一种无服务器技术,即IBM Cloud Code Engine。它的模型基于 Docker 容器,其用例之一是基于 http 的 Web 应用程序,例如您的 Flask 应用程序。

您可以根据需要定义 Dockerfile,不需要特殊的骨架,只需按照本指南 Dockerfile best practice for Code Engine 即可

于 2021-01-29T11:55:55.757 回答
0

上传到 IBM Cloud Functions 的 Docker 映像必须实现某些 REST 接口。实现这一点的最简单方法是将容器基于openwhisk/dockerskeleton图像。

请参阅 如何在 IBM Cloud 函数中运行 docker 映像?https://github.com/iainhouston/dockerPython 了解更多详情

于 2021-01-29T11:18:31.880 回答