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

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

2 ответа

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

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

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

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

Другие вопросы по тегам