WebService mit Python in Docker

Ein Webservice ist ein Service, der über das http-Protkoll bedient werden kann. Dies kann für kleine Datenbankabfragen über das Netz oder dergleichen nützlich sein. Für Python gibt es die Bibliothek cherrypy. Diese kann so installiert werde:

  • pip install CherryPy

Ein einfacher Webservice in python (WebService.py) sieht dann so aus:

import cherrypy

class MySmallWebservice(object):
    @cherrypy.expose
    def index(self):
        return "my web service"

if __name__ == '__main__':
    config = {'server.socket_host': '0.0.0.0'}
    cherrypy.config.update(config)
    cherrypy.quickstart(MySmallWebservice())

Dieses Skript gibt lediglich einen Text per HTTP aus. Startet man das python script:

  • python WebService.py

kann man damit sich mit einem WebClient über localhost:8080 den Text im Browser ausgeben oder mit

auf die Konsole ausgeben lassen

Wirklich interessant ist es dann, wenn man den Webserice in Container packt. Hier ein Dockerfile für einen Container build.:

from python:3.6.4-slim-jessie
RUN pip install CherryPy
COPY WebService.py .
EXPOSE 8080
ENTRYPOINT ["python", "WebService.py"]

Nun kann der Container gebaut und gestartet werden:

  • sudo docker build -t python-mysmallwebservice .
  • sudo docker run -p 8080:8080 python-mysmallwebservice

Für ein kleines Script ist der Container natürlich mit 170MB schon recht groß, aber dafür kann er recht einfach verteilt werden.

Vielleicht noch ein paar Hinweise zum Löschen von Docker Containern, da ich damit die meisten Probleme hatte:

  • Entfernt alle Images und Container: sudo docker system prune -a
  • Auflisten der Container: sudo docker images -a
  • Entfernen einzelner Images: sudo docker rmi Image

Der Unterschied zwischen Container und Image ist, dass ein Image das erzeugte aus einem Build-Prozess vom Dockerfile ist. Sobald es gestartet ist, läuft vom Container eine Instanz und wird vom Image genannt.

Links:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes-de

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.