S2I or Source to Image, is a way to deploy application from its sourcecode directly to Openshift. In this article, we try to build a Python apps with Flask framework and deploy it to Openshift.
So lets start with requirements.txt for storing required libraries
flask
And a simple hello world app
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<h1>Hello, World!</h1>"
app.run(host="0.0.0.0", port=8080)
Next is where the magic happens, it would build, containerized and push the whole apps to external registry by using below commands,
$ oc new-build . --name=hello-world-python --to-docker --to=docker.io/dockerusername/hello-world-python $ oc start-build hello-world-python --from-dir=. --follow --wait
Once we push it to external registry, we can pull and run the apps in Openshift
$ oc new-app . --docker-image=dockerusername/hello-world-python --name=hello-world-python-app
And expose a secure URL for it,
$ oc create route edge --service=hello-world-python-app
Code for this can be accessed here,
https://github.com/edwin/hello-world-flask