IBM Cloud Functions: как запустить функцию Docker?

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.

Как лучше всего подойти к этому?


person caoyufei    schedule 29.01.2021    source источник


Ответы (2)


Образы Docker, которые загружаются в IBM Cloud Functions, должны реализовывать определенные интерфейсы REST. Самый простой способ добиться этого - создать контейнер на основе openwhisk/dockerskeletonimage.

См. Как запустить образ докера в функциях IBM Cloud. ? и https://github.com/iainhouston/dockerPython для получения дополнительных сведений.

person mime    schedule 29.01.2021

В документации по IBM Cloud Functions есть несколько указателей на как создать на основе Docker функции. Облачные функции IMHO больше подходят для краткосрочных бессерверных рабочих нагрузок, и я хотел бы указать вам на другую бессерверную технологию в виде IBM Cloud Code Engine. Его модель основана на контейнерах Docker, и одним из вариантов использования являются веб-приложения на основе http, например, например, ваше приложение Flask.

Вы должны определить Dockerfile по своему усмотрению, не требуя специального каркаса, и можете просто следовать этому руководство по передовым методам работы с Dockerfile для Code Engine.

person data_henrik    schedule 29.01.2021