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.