diff options
Diffstat (limited to 'recipes-demo/helloworld-flask')
4 files changed, 109 insertions, 0 deletions
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app b/recipes-demo/helloworld-flask/helloworld-flask/flask-app new file mode 100755 index 00000000..15ecde93 --- /dev/null +++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app @@ -0,0 +1,21 @@ +#!/usr/bin/python3 + +# Example flask application for containerization +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +from flask import Flask + +app = Flask(__name__) + +@app.route('/yocto/', methods=['GET', 'POST']) +def welcome(): + return "Hello from Yocto!" + +@app.route('/oe/', methods=['GET', 'POST']) +def welcometooe(): + return "Hello from OpenEmbedded!" + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=9000) diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml b/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml new file mode 100644 index 00000000..f2c8bbe2 --- /dev/null +++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: @NAME@ +spec: + selector: + matchLabels: + app: @APPNAME@ + replicas: 1 + template: + metadata: + labels: + app: @APPNAME@ + spec: + containers: + - name: @CONTAINERNAME@ + image: @CONTAINERIMAGE@ + ports: + - containerPort: @CONTAINERPORT@ +--- +apiVersion: v1 +kind: Service +metadata: + name: yocto-flask-service +spec: + ports: + - port: @EXTERNALPORT@ + targetPort: @CONTAINERPORT@ + name: http + selector: + app: @APPNAME@ + diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml b/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml new file mode 100644 index 00000000..85c0362e --- /dev/null +++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Pod +metadata: + name: @NAME@ +spec: + containers: + - name: @CONTAINERNAME@ + image: @CONTAINERIMAGE@ + ports: + - containerPort: @CONTAINERPORT@ + + diff --git a/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb b/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb new file mode 100644 index 00000000..896e45fd --- /dev/null +++ b/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb @@ -0,0 +1,44 @@ +DESCRIPTION = "Demo flask application" +HOMEPAGE = "https://yoctoproject.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://flask-app \ + file://flask-app.yaml \ + file://flask-app-service.yaml" + +DEPLOY_TYPE ?= "pod" + +NAME ?= "demo" +APPNAME ?= "yocto-app" +CONTAINERNAME ?= "yocto-container" +CONTAINERIMAGE ?= "zeddii/app-container:latest" +CONTAINERPORT ?= "9000" +EXTERNALPORT ?= "10000" + +do_install() { + + for tgt in flask-app.yaml flask-app-service.yaml; do + sed -i 's%\@NAME\@%${NAME}%g' ${WORKDIR}/$tgt + sed -i 's%\@APPNAME\@%${APPNAME}%g' ${WORKDIR}/$tgt + sed -i 's%\@CONTAINERNAME\@%${CONTAINERNAME}%g' ${WORKDIR}/$tgt + sed -i 's%\@CONTAINERIMAGE\@%${CONTAINERIMAGE}%g' ${WORKDIR}/$tgt + sed -i 's%\@CONTAINERPORT\@%${CONTAINERPORT}%g' ${WORKDIR}/$tgt + sed -i 's%\@EXTERNALPORT\@%${EXTERNALPORT}%g' ${WORKDIR}/$tgt + done + + install -d ${D}${bindir}/ + install -m 755 ${WORKDIR}/flask-app ${D}${bindir}/ + + install -d ${D}${sysconfdir}/deploy + install -m 644 ${WORKDIR}/flask-app.yaml ${D}${sysconfdir}/ + install -m 644 ${WORKDIR}/flask-app-service.yaml ${D}${sysconfdir}/ +} + +RDEPENDS:${PN} += "python3-core python3-flask" + +PACKAGES:prepend = "${PN}-deploy " +FILES:${PN}-deploy = "${sysconfdir}/*" + +# this rdepends should be conditional on a debug PACKAGECONFIG +# RDEPENDS:${PN} += "busybox" |