2016-05-19 3 views
0

私はDockerの新機能ですので、私は何の無知についてお詫び申し上げます。リモートのDockerコンテナでPythonスクリプトを実行するにはどうしたらいいですか?

私は実行するためにPythonスクリプトをトリガーする必要があるWeb APIを持っています。スクリプトは非常にリソース集中型(CPUとRAM)なので、APIサーバーとは異なるサーバーで実行する必要があります。私はDockerコンテナ内でこのスクリプトを実行する予定です。私もKubernatesを使うつもりです。

私のAPIはイメージからコンテナを作成し、イメージが起動して実行されるとPythonスクリプトを実行する必要があります。

スクリプトを実行するにはどうすればよいですか?これにRundeckを使うのは意味がありますか?それともSSHを使うのが理にかなっていますか?または、他の何か?私は私が使用したどちらの二つのアプローチ、と考えることができます私の頭の上オフ

答えて

2

  • スクリプトがすぐに開始したい場合は、キックオフするためにあなたのDockerfileにCMDまたはENTRYPOINTを使用

ので、抽象化されたコンテナの開始時にスクリプト、この

FROM python 

COPY myscript.py /tmp 

CMD ["python", "/tmp/myscript.py"] 
    のようなもの
  • スクリプトがトリガされたときだけ実行されるようにするには、たとえばWebリクエストのイベントによって、Pythonコードをフラスコ、ボトル、またはuwsgiのようなものに "ラップ"します。

これは、次のようになります。

あなたのラッパースクリプトを持っているmywrapper.pyである:その場合は

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

あなたDockerfileがポートを露出させた後、Webサーバーを起動を介してこれを設定することもできます:

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

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

runserver.shサーバービットを設定するだけで:

#!/bin/bash 
set -e 
exec uwsgi --http 0.0.0.0:80 --wsgi-file wrapper.py --callable app 
関連する問題