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.