2016-05-19 7 views
0

Ich bin brandneu bei Docker, also entschuldige ich mich für Unwissenheit.Wie kann ich ein Python-Skript in einem Remote-Docker-Container ausführen?

Ich habe eine Web-API, die ein auszuführendes Python-Skript auslösen muss. Das Skript ist sehr ressourcenintensiv (CPU und RAM) und muss daher auf einem anderen Server als dem API-Server ausgeführt werden. Ich plane, dieses Skript in einem Docker-Container auszuführen. Ich plane auch, Kubernates zu verwenden.

Meine API wird einen Container aus einem Image erstellen, und dann muss das Python-Skript ausgeführt werden, sobald das Image ausgeführt wird.

Wie kann ich das Skript zum Ausführen auslösen? Wäre es sinnvoll, Rundeck dafür zu nutzen? Oder wäre es sinnvoller, einfach SSH zu verwenden? Oder etwas anderes?

Antwort

2

Aus der Spitze von meinem Kopf ich zwei Ansätze denken kann, von denen beide ich verwendet habe:

  • Wenn Sie das Skript sofort zu starten, verwenden Sie CMD oder ENTRYPOINT in Ihrem Dockerfile off Kick das Skript beim Start des Behälters

So abstrahiert, so etwas wie diese

FROM python 

COPY myscript.py /tmp 

CMD ["python", "/tmp/myscript.py"] 
  • Wenn das Skript nur ausgeführt werden soll, wenn es ausgelöst wird, z. B. durch ein Ereignis der Webanforderung, "wickle" den Python-Code in etwas wie flask, bottle oder uwsgi.

Dies könnte wie folgt aussehen:

Ihr Wrapper-Skript ist mywrapper.py, die hat:

#!usr/bin/env python 
import bottle 
app = bottle.Bottle() 
@app.route('/') 
def main(): 
    call_my_python_code() 

In diesem Fall Ihre Dockerfile dies einen Port aussetzt nach oben durch und dann Starten des Web-Servers kann :

FROM python 
COPY wrapper.py runserver.sh myscript.py /tmp 

EXPOSE 80 
CMD ["/bin/bash", "-x", "/tmp/runserver.sh" ] 

Mit runserver.sh nur den Server-Bit-Einrichtung:

#!/bin/bash 
set -e 
exec uwsgi --http 0.0.0.0:80 --wsgi-file wrapper.py --callable app 
Verwandte Themen